with open(QRcode_path, ‘wb’) as f:
for chunk in resp.iter_content(chunk_size=1024):
f.write(chunk)
QRcode = Image.open(QRcode_path)
QRcode.show()
获取二维码图片之后,在 Fiddler 抓包神器中一直刷新带 check 的 url 地址,猜测这个也是和登录有关的,应该是检测二维码是否被扫码。
检测是否被扫码抓包
def check_QRcode():
url = ‘https://qr.m.jd.com/check’
params = {
‘appid’: ‘133’,
‘callback’: ‘jQuery{}’.format(random.randint(1000000, 9999999)),
‘token’: session.cookies.get(‘wlfstk_smdl’),
‘_’: str(int(time.time() * 1000)),
}
headers = {
‘User-Agent’: user_agent,
‘Referer’: ‘https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F’,
}
resp = session.get(url=url, headers=headers, params=params)
resp_json = parse_json(resp.text)
if ‘ticket’ in resp_json:
print(resp_json)
return resp_json[‘ticket’]
else:
print(resp_json[‘msg’])
print(‘请刷新京东登录二维码!’)
os._exit(0)
示例结果
{‘code’: 200, ‘ticket’: ‘AAEAIPL-bkU4RNrUw7YaLqYZhjWKqvP23PtkY1XTD2Cv2a52’}
验证二维码
在检测二维码是否被扫码之后,在 Fiddler 抓包神器中出现有一个带 qrCodeTicketValidation 的 url 地址,需要传递一个 t 参数,这个参数正好是 https://qr.m.jd.com/check
的返回值