File tree 3 files changed +54
-0
lines changed
3 files changed +54
-0
lines changed Original file line number Diff line number Diff line change
1
+ .idea
2
+
Original file line number Diff line number Diff line change
1
+ import requests
2
+ from bs4 import BeautifulSoup
3
+
4
+ import time
5
+ import urllib .parse
6
+
7
+
8
+ def login (username , password ):
9
+ session = requests .Session ()
10
+
11
+ r = session .get ('https://runkeeper.com' )
12
+ soup = BeautifulSoup (r .text , 'html.parser' )
13
+ qs = urllib .parse .parse_qs (urllib .parse .urlparse (soup .find (class_ = 'log-in' ).find ('a' )['href' ][27 :- 2 ]).query )
14
+
15
+ state = qs ['state' ]
16
+
17
+ session .post ('https://id.asics.com/oauth2/token/auth' , data = {
18
+ 'username' : username ,
19
+ 'password' : password ,
20
+ 'language' : 'en' ,
21
+ 'locale' : 'en-US' ,
22
+ 'grant_type' : 'password' ,
23
+ 'client_id' : 'runkeeper' ,
24
+ 'style' : 'runkeeper' ,
25
+ 'max_cookie_timeout' : '' ,
26
+ 'platform' : 'web'
27
+ })
28
+
29
+ r = session .post ('https://id.asics.com/oauth2/authorize' , params = {
30
+ 'response_type' : 'code' ,
31
+ 'client_id' : 'runkeeper' ,
32
+ 'redirect_uri' : 'https://runkeeper.com/asicsIDMLogin' ,
33
+ 'state' : state
34
+ })
35
+
36
+ qs = urllib .parse .parse_qs (urllib .parse .urlparse (r .url ).query )
37
+ r = session .get ('https://runkeeper.com/asicsIDMLogin' , params = {
38
+ 'submit' : '' ,
39
+ 'code' : qs ['code' ][0 ],
40
+ 'state' : qs ['state' ][0 ],
41
+ 'error' : ''
42
+ })
43
+
44
+ assert r .url == 'https://runkeeper.com/home?llsignup=false'
45
+ print ('Success!' )
46
+
47
+ return session
48
+
49
+
50
+ session = login ('' , '' )
Original file line number Diff line number Diff line change
1
+ requests >= 2.21.0
2
+ beautifulsoup4 >= 4.6.3
You can’t perform that action at this time.
0 commit comments