[转载] Python京东抢购

参考链接: 从Python获取输入

Python京东抢购 

分析其中提交信息接口的参数,可以成功抢购商品,并且可以提交订单。。。。2018年7月17日 

提交信息的获取 

直接提交信息对post提交分析其中的参数。  经过分析参数大多数在:https://passport.jd.com/new/login.aspx  

图片验证码地址 

判断登陆是否有验证码:后面的/uc/showAuthCode可以判断是一个url。  访问上面的code_url地址:可以看到获取的是false不需要验证码,true需要验证码  分析验证码地址的url:  分析验证码的地址:验证码是显示在login.aspx尝试是否能在里面获取参数信息。可以看到里面含有image_url图片后面的参数  

进行post信息提交 

分析post提交url的地址:登陆成功回返回success信息  

接下来获取用户的信息:   就以上三步分析,主要还是其中参数分析比较困难,以及提交url地址后面需要的参数。有的时候url地址后面不要参数可以,但是有的时候没参数就不行。post提交地址的时候,一开始没有加上uuid参数就一直不能提交成功。 

加入购物车并提交订单 

添加到购物车的接口  注意这里提交订单需要加上header头中的’referer’: ‘https://cart.jd.com/cart.action’。  接下来就是提交订单的参数  

贴上抢购过程 

  可以看到订单号是相同的,物品购买成功  加入了打码模块,和添加多个物品去购物车,以及商品倒计时。  

完整登陆代码 

import requests

import json

import time

import json

from pyquery import PyQuery as pq

from pprint import pprint as pp

 

 

class JingDong:

    headers = {

        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36'

        ' (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36',

        'Referer': 'https://www.jd.com/',

    }

 

    def __init__(self, username, password):

        self.index_url = 'https://passport.jd.com/new/login.aspx'  # 京东首页的地址

        self.auth_url = 'https://passport.jd.com/uc/showAuthCode'  # 判断验证码地址

        self.post_url = 'https://passport.jd.com/uc/loginService?uuid{}&ltype=logout&version=2015'  # 登陆的地址

        self.user_url = 'https://passport.jd.com/user/petName/getUserInfoForMiniJd.action?&callback=jsonpUserinfo&_=' + \

            str(int(time.time() * 1000))  # 检测用户信息

        self.session = requests.Session()  # session通信

        self.username = username

        self.password = password

        self.uuid = ''

 

    def login_info(self):  # 获取登陆信息的参数

        response = self.session.get(

            url=self.index_url, headers=self.headers).text

        doc = pq(response)

        sa_token = doc('#sa_token').attr('value')

        uuid = doc('#uuid').attr('value')

        self.uuid = uuid

        eid = doc('#eid').attr('value')

        fp = doc('#sessionId').attr('value')

        _t = doc('#token').attr('value')

        loginType = doc('#loginType').attr('value')

        pubKey = doc('#pubKey').attr('value')

 

        response = self.session.get(

            url=self.auth_url, headers=self.headers).text

        if 'true' in response:  # 返回的true就是需要验证码

            auth_code_url = doc('#JD_Verification1').attr('src2')  # 获取code的url

            auth_code = str(self.get_code(auth_code_url))

        else:

            auth_code = ''

        data = {  # 提交的参数

            'uuid': uuid,

            'eid': eid,

            'fp': fp,

            '_t': _t,

            'loginType': loginType,

            'loginname': self.username,

            'nloginpwd': self.password,

            'authcode': auth_code,

            'pubKey': pubKey,

            'sa_token': sa_token

        }

        return data

 

    def get_code(self, url):  # 获取验证码

        time_str = str((int)(time.time() * 1000))

        code_url = f'https:{url}&yys={time_str}'  # 拼接code_img的地址

        response = self.session.get(

            url=code_url, headers=self.headers, stream=True)

        with open('code.jpg', 'wb') as f:

            for chunk in response.iter_content(1024):

                f.write(chunk)

        code_text = input('请输入验证码:')

        return code_text

 

    def login(self):

        data = self.login_info()  # 获取提交的参数

        headers = {

            'Referer': self.post_url,

            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36'

                          ' (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36',

            'X-Requested-With': 'XMLHttpRequest'

        }

        try:

            url = self.post_url.format(self.uuid)  # 拼接提交url

            login_page = self.session.post(

                url, data=data, headers=headers)        # 提交登陆

            if 'success' in login_page.text:

                print('登陆成功')

            response = self.session.get(

                url=self.user_url, headers=headers)        # 获取登陆信息

            response = response.text.strip('jsonpUserinfo()\n')

            pp(json.loads(response))

        except Exception as e:

            raise e

jingdong = JingDong('用户名', '密码')

jingdong.login()

Python京东抢购茅台脚本是一个用Python编写的自动化脚本,旨在实现在京东平台上抢购茅台酒的功能。下面将以300字进行回答。 京东抢购茅台酒是一个备受关注的事件,由于茅台酒的供不应求,很多人希望能通过脚本来提高购买的成功率。Python京东抢购茅台脚本具有以下特点: 1. 验证码识别:京东网站在购买过程中会出现验证码,脚本使用图像处理库,如OpenCV,来自动识别并填写验证码,提高购买成功率。 2. 并发请求:通过使用异步请求库,如aiohttp或requests异步请求库,可以模拟多个用户同时购买,从而提高抢购速度。 3. 登录和购买流程:脚本可以模拟登录京东账号,并在抢购开始时自动选择购买页面,并选择所需的数量和规格,然后自动点击购买按钮。 4. 自动重试:如果在抢购过程中遇到网络异常或其他问题,脚本可以自动重试,确保购买的成功率。 5. 抢购监控:脚本可以设置监控时间,当抢购开始时自动执行,并实时监控购买状态,如库存情况等。一旦有可购买的茅台酒,脚本会自动进行抢购。 需要注意的是,使用Python京东抢购茅台脚本可能违反了京东的使用协议,因此在使用之前必须了解并遵守相关法律法规和平台规则。此外,由于服务器响应速度和网络情况可能影响抢购效果,脚本的成功率并不百分之百。使用脚本抢购茅台酒时,不仅需要技术支持,还需要适当的策略和运气。 总结来说,Python京东抢购茅台脚本是一个通过自动化脚本来提高抢购茅台酒成功率的工具,但仍需谨慎使用,并了解相关法律法规和平台规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值