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