受欢迎的网站建设,专业定制网页设计,如何分析网站的设计,wordpress 优化设置参考链接#xff1a; 从Python获取输入
Python京东抢购
分析其中提交信息接口的参数#xff0c;可以成功抢购商品#xff0c;并且可以提交订单。。。。2018年7月17日
提交信息的获取
直接提交信息对post提交分析其中的参数。 经过分析参数大多数在#xff1a;https…参考链接 从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{}ltypelogoutversion2015 # 登陆的地址 self.user_url https://passport.jd.com/user/petName/getUserInfoForMiniJd.action?callbackjsonpUserinfo_ \ 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( urlself.index_url, headersself.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( urlself.auth_url, headersself.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 fhttps:{url}yys{time_str} # 拼接code_img的地址 response self.session.get( urlcode_url, headersself.headers, streamTrue) 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, datadata, headersheaders) # 提交登陆 if success in login_page.text: print(登陆成功) response self.session.get( urlself.user_url, headersheaders) # 获取登陆信息 response response.text.strip(jsonpUserinfo()\n) pp(json.loads(response)) except Exception as e: raise e
jingdong JingDong(用户名, 密码)
jingdong.login()