Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a697fd4

Browse files
committed
no message
1 parent 9db05e8 commit a697fd4

File tree

1 file changed

+133
-0
lines changed

1 file changed

+133
-0
lines changed

‎moumoubaimifan/jd/jdpc.py‎

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
import requests
2+
import random
3+
import time
4+
import os
5+
import json
6+
7+
from PIL import Image
8+
9+
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
10+
11+
session = requests.session()
12+
13+
14+
def show_QRcode():
15+
url = 'https://qr.m.jd.com/show'
16+
params = {
17+
'appid': 133,
18+
'size': 147,
19+
't': str(int(time.time() * 1000)),
20+
}
21+
headers = {
22+
'User-Agent': user_agent,
23+
'Referer': 'https://passport.jd.com/new/login.aspx',
24+
}
25+
resp = session.get(url=url, headers=headers, params=params)
26+
27+
QRcode_path = 'QRcode.png'
28+
with open(QRcode_path, 'wb') as f:
29+
for chunk in resp.iter_content(chunk_size=1024):
30+
f.write(chunk)
31+
32+
QRcode = Image.open(QRcode_path)
33+
QRcode.show()
34+
35+
def check_QRcode():
36+
37+
url = 'https://qr.m.jd.com/check'
38+
params = {
39+
'appid': '133',
40+
'callback': 'jQuery{}'.format(random.randint(1000000, 9999999)),
41+
'token': session.cookies.get('wlfstk_smdl'),
42+
'_': str(int(time.time() * 1000)),
43+
}
44+
headers = {
45+
'User-Agent': user_agent,
46+
'Referer': 'https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F',
47+
}
48+
resp = session.get(url=url, headers=headers, params=params)
49+
resp_json = parse_json(resp.text)
50+
51+
if 'ticket' in resp_json:
52+
print(resp_json)
53+
return resp_json['ticket']
54+
else:
55+
print(resp_json['msg'])
56+
print('请刷新JD登录二维码!')
57+
os._exit(0)
58+
59+
60+
def validation_QRcode(ticket):
61+
62+
url = 'https://passport.jd.com/uc/qrCodeTicketValidation'
63+
headers = {
64+
'User-Agent': user_agent,
65+
'Referer': 'https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F',
66+
}
67+
params={
68+
't': ticket
69+
}
70+
resp = session.get(url=url, headers=headers, params=params)
71+
print(resp.text)
72+
73+
74+
def parse_json(str):
75+
return json.loads(str[str.find('{'):str.rfind('}') + 1])
76+
77+
78+
def coupon_list():
79+
url = 'https://a.jd.com/indexAjax/getCouponListByCatalogId.html'
80+
headers = {
81+
'User-Agent': user_agent,
82+
'Referer': 'https://a.jd.com/?cateId=118',
83+
}
84+
couponList = []
85+
for i in range(1, 20):
86+
params = {
87+
'callback': 'jQuery{}'.format(random.randint(1000000, 9999999)),
88+
'catalogId': '118',
89+
'page': str(i),
90+
'pageSize': '9',
91+
'_': str(int(time.time() * 1000)),
92+
}
93+
try:
94+
resp = session.get(url=url, params=params, headers=headers)
95+
json = parse_json(resp.text)
96+
couponList.extend(json['couponList'])
97+
if json['totalNum'] == 1:
98+
continue
99+
else:
100+
break
101+
except Exception:
102+
print('出错了!')
103+
return couponList
104+
105+
106+
def get_coupon(coupon_list):
107+
url = 'https://a.jd.com/indexAjax/getCoupon.html'
108+
headers = {
109+
'User-Agent': user_agent,
110+
'Referer': 'https://a.jd.com/?cateId=118',
111+
}
112+
for coupon in coupon_list:
113+
params = {
114+
'callback': 'jQuery{}'.format(random.randint(1000000, 9999999)),
115+
'key': coupon['key'],
116+
'type': '1',
117+
'_': str(int(time.time() * 1000)),
118+
}
119+
time.sleep(1)
120+
resp = session.get(url=url, params=params, headers=headers)
121+
print(resp.text)
122+
123+
124+
125+
if __name__ == '__main__':
126+
show_QRcode()
127+
128+
time.sleep(10)
129+
130+
ticket = check_QRcode()
131+
validation_QRcode(ticket)
132+
coupon_list = coupon_list()
133+
get_coupon(coupon_list)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /