python模拟登录或注册之requests处理带token请求
2017-02-28 16:22
721 查看
转自:http://blog.csdn.net/foryouslgme/article/details/51822209
首先说一下使用Python模拟登录或注册时,对于带token的页面怎么登录注册模拟的思路:
1、对于带token的页面,需要先从最开始的页面获取合法token
2、然后使用获取到的合法token进行后续操作
3、token一般存储的地方有两个:
【一种是携带在cookie中】、【一种是在respose(页面返回)的隐藏表单中】,获取思路类似
释:header是针对服务端有各种限制或特定需求时使用的,一般服务器会进行类似如:X-Requested-With、Content-Length、User-Agent等的验证,所以需要将其以字典的形势发送给服务器
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
首先说一下使用Python模拟登录或注册时,对于带token的页面怎么登录注册模拟的思路:
1、对于带token的页面,需要先从最开始的页面获取合法token
2、然后使用获取到的合法token进行后续操作
3、token一般存储的地方有两个:
【一种是携带在cookie中】、【一种是在respose(页面返回)的隐藏表单中】,获取思路类似
释:header是针对服务端有各种限制或特定需求时使用的,一般服务器会进行类似如:X-Requested-With、Content-Length、User-Agent等的验证,所以需要将其以字典的形势发送给服务器
#reg.py ''' 此代码只实现了注册的第一步【手机发送验证码】,主要解决的获取token 具体操作有:获取页面第一次请求时的重要信息,如:cookie与token ''' import requests #拼接url host = "http://10.70.18.33:8083/" url1 = host + "shopxx-mobile/register.jhtml" #初始化url请求对象 r = requests.get(url1) #获取url请求对象中的有用信息,如token、cookies token = r.cookies.items()[0][1] cookies = r.cookies #以下为测试,所获取的token及cookie的格式 print(type(token)) print(token) print(cookies) print(r.headers) print(r.url) #手机号码发送验证码的url拼接 url2 = host + "shopxx-mobile/register/send.jhtml" #拼接header中的重要数据,如:token、cookie、User-Agent、Content-Length、X-Requested-With等,其中除token及cookie是通过上面的代码获取到的之外,其它的均可以通过firefox浏览器进行获取 headers = { "token": token, "Host": "10.70.18.33:8083", "User-Agent":" Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:46.0) Gecko/20100101 Firefox/46.0", "Accept": "application/json, text/javascript, */*; q=0.01", "Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", "Accept-Encoding": "gzip, deflate", "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With": "XMLHttpRequest", "Connection":"keep-alive", "Content-Length": "18", "charset":"UTF-8", "cookie":"token=" + token } #一般登录注册页面均是post方式进行提交的,需要将post需要提交的数据(此处为需要发送验证码的手机号码)进行组装 data = {'mobile':'1851174****'} #初始化post请求对象(需要传入url、提交的数据、header) s = requests.post(url2,data,headers=headers) #打印返回结果 print(s) print(s.status_code,s.text)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
执行结果
/Users/frankslg/PycharmProjects/cjb/mobile/regist.py <class 'str'> 7c74a4cce353aec3133005feb40a9f39 <RequestsCookieJar[<Cookie token=7c74a4cce353aec3133005feb40a9f39 for 10.70.18.33/>]> {'Date': 'Mon, 04 Jul 2016 08:53:30 GMT', 'Set-Cookie': 'token=7c74a4cce353aec3133005feb40a9f39; Path=/', 'Server': 'Apache-Coyote/1.1', 'Content-Type': 'text/html;charset=UTF-8', 'Content-Language': 'zh-CN', 'Transfer-Encoding': 'chunked'} http://10.70.18.33:8083/shopxx-mobile/register.jhtml <Response [200]> 200 {"type":"success","content":"恭喜您,账号注册成功!"}1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
函数封装
import requests def reg(): host = "http://10.70.18.33:8083/" url1 = host + "shopxx-mobile/register.jhtml" r = requests.get(url1) token = r.cookies.items()[0][1] url2 = host + "shopxx-mobile/register/send.jhtml" headers = { "token": token, "Host": "10.70.18.33:8083", "User-Agent":" Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:46.0) Gecko/20100101 Firefox/46.0", "Accept": "application/json, text/javascript, */*; q=0.01", "Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", "Accept-Encoding": "gzip, deflate", "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With": "XMLHttpRequest", "Connection":"keep-alive", "Content-Length": "18", "charset":"UTF-8", "cookie":"token=" + token } data = {'mobile':'1851174****'} s = requests.post(url2,data,headers=headers) print(s.status_code,s.text) if __name__ == '__main__': reg()
相关文章推荐
- Python入门:模拟登录(二)或注册之requests处理带token请求
- Python入门:模拟登录(二)或注册之requests处理带token请求
- 模拟http或https请求,实现ssl下的bugzilla登录、新增BUG,保持会话以及处理token
- python爬虫实战(四)--------豆瓣网的模拟登录(模拟登录和验证码的处理----scrapy)
- 【python】模拟用户登录爬取数据带cookie情况处理
- python requests 模拟网站登录
- Python - Requests 模拟 DWR框架的请求
- jquery 跨域 异步请求 自定义头部 预检请求 spring mvc拦截处理 实现token单点登录
- python---post请求数据包,正常模拟登录,图片验证码未自动化,phtesseract
- python 模拟查询请求并处理返回结果
- python 爬虫 利用selenium模拟登录帐号 向requests中重设 cookie
- python中使用requests 模拟浏览器发送请求数据
- python---POST/GET请求数据包,图片验证码自动化识别,pytesseract,模拟用户一次正常登录
- 以写代学: python 模拟用户注册或登录账号
- JSP+JavaBean+Servlet用户注册登录请求的处理
- python3下使用requests模拟用户登录 —— 中级篇(百度云俱乐部)
- 模拟登录获取新浪微博的access_token
- python实现模拟登录
- Python模拟Web Fetion登录解析
- 模拟登录新浪微博(Python)