50行Python搞定京东商品抢购

50行Python搞定京东商品抢购

之前写的一篇京东抢购商品,由于京东账号登录图片验证码改为了极验验证码,一直在尝试怎么用请求来去破解,而不是selenium去模拟点击,但是技不如人搞不定。。。

进而改为直接用cookie去登录,来抢购商品,对这方面感兴趣的可以加群来讨论。

import requests
import time
import json


class JD:
    headers = {
        referer: ,
        user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36,
    }

    def __init__(self):
        self.index = https://www.jd.com/
        self.user_url = https://passport.jd.com/user/petName/getUserInfoForMiniJd.action?&callback=jsonpUserinfo&_= + 
            str(int(time.time() * 1000))  # 检测用户信息
        self.buy_url = https://cart.jd.com/gate.action?pid={}&pcount=1&ptype=1    # 添加到购物车
        self.pay_url = https://cart.jd.com/gotoOrder.action   # 提交订单
        self.pay_success = https://trade.jd.com/shopping/order/submitOrder.action  # 付款页面
        self.goods_id =   # 商品id
        self.thor = 	# 用户的cookie
        self.session = requests.session()

    def login(self):  # 直接加上cookie访问用户信息。
        JD.headers[referer] = https://cart.jd.com/cart.action
        c = requests.cookies.RequestsCookieJar()
        c.set(thor, self.thor)  # 添加用户的thor
        self.session.cookies.update(c)
        response = self.session.get(
            url=self.user_url, headers=JD.headers).text.strip(jsonpUserinfo()
)
        user_info = json.loads(response)
        print(账号:, user_info.get(nickName))
        if user_info.get(nickName):
            self.shopping()

    def shopping(self):
        goods_url = input(商品链接:)
        self.goods_id = goods_url[
            goods_url.rindex(/) + 1:goods_url.rindex(.)]
        JD.headers[referer] = goods_url
        buy_url = self.buy_url.format(self.goods_id)
        self.session.get(url=buy_url, headers=JD.headers)  # 添加到购物车
        self.session.get(url=self.pay_url, headers=JD.headers)  # 提交订单
        response = self.session.post(
            url=self.pay_success, headers=JD.headers)     # 提交订单
        order_id = json.loads(response.text).get(orderId)
        if order_id:
            print(抢购成功订单号:, order_id)

jd = JD()
jd.login()	# http://loghb.com
经验分享 程序员 微信小程序 职场和发展