转自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等的验证,所以需要将其以字典的形势发送给服务器

 #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()[][]
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": "",
"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)

执行结果

/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":"恭喜您,账号注册成功!"}

函数封装

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": "",
"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请求的更多相关文章

  1. 用python实现模拟登录人人网

    用python实现模拟登录人人网 字数4068 阅读1762 评论19 喜欢46 我决定从头说起.懂的人可以快速略过前面理论看最后几张图. web基础知识 从OSI参考模型(从低到高:物理层,数据链路 ...

  2. Python入门基础学习 二

    Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...

  3. 使用Python+Selenium模拟登录QQ空间

    使用Python+Selenium模拟登录QQ空间爬QQ空间之类的页面时大多需要进行登录,研究QQ登录规则的话,得分析大量Javascript的加密解密,这绝对能掉好几斤头发.而现在有了seleniu ...

  4. 【Python】模拟登录上海西南某高校校园网 (jaccount)

    好久没写东西了,最近学习了一下模拟登录,以校园网为例,作一记录. 去年的时候写过一篇模拟登录的文章,用的是登录后的cookies,这种操作比较傻瓜,也不智能,不够自动化,本质还是手动登录. 这次我尝试 ...

  5. python实现模拟登录【转】

    原文网址:http://www.blogjava.net/hongqiang/archive/2012/08/01/384552.html 本文主要用python实现了对网站的模拟登录.通过自己构造p ...

  6. python实现模拟登录

    本文主要用python实现了对网站的模拟登录.通过自己构造post数据来用Python实现登录过程.   当你要模拟登录一个网站时,首先要搞清楚网站的登录处理细节(发了什么样的数据,给谁发等...). ...

  7. Python爬虫模拟登录带验证码网站

    问题分析: 1.爬取网站时经常会遇到需要登录的问题,这是就需要用到模拟登录的相关方法.python提供了强大的url库,想做到这个并不难.这里以登录学校教务系统为例,做一个简单的例子. 2.首先得明白 ...

  8. python爬虫22 | 以后我再讲python「模拟登录」我就是狗

    接下来就是 学习python的正确姿势 做爬虫 绕不开模拟登录 为此小帅b给大家支了几招 python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 有些网站的登录很弱鸡 传个用户名和密 ...

  9. python爬虫模拟登录的图片验证码处理和会话维持

    目标网站:古诗文网 登录界面显示: 打开控制台工具,输入账号密码,在ALL栏目中进行抓包 数据如下: 登录请求的url和请求方式 登录所需参数 参数分析: __VIEWSTATE和__VIEWSTAT ...

随机推荐

  1. The Suspects (并查集)

    个人心得:最基础的并查集经典题.借此去了解了一下加深版的即加权并查集,比如食物链的题目,这种题目实行起来还是有 一定的难度,不仅要找出与父节点的关系,还要在路径压缩的时候进行更新,这一点现在还是没那么 ...

  2. 五、python沉淀之路--字典

    一. 1.根据序列,创建字典,并指定统一的值 v = dict.fromkeys(["],222) print(v) {': 222} 2.根据key 获取值,key不存在时,报错:get方 ...

  3. 系列文章----.Net程序员学用Oracle系列

    .Net程序员学用Oracle系列(18):PLSQL Developer 攻略 .Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus) .Net程序员学用Oracle系列(1 ...

  4. 总结:实体类和(XML或二进制)之间相互转(序列化和反序列化)

    XML和实体类之间相互转换(序列化和反序列化) C# XML反序列化与序列化举例:XmlSerializer XML文件与实体类的互相转换   通过我前面的几篇收藏的文章,今天来自己做个对实体类对象序 ...

  5. 如何上Chrome谷歌商店

    将以下代码复制到本地Hosts中即可. #Google Services START64.233.162.83 0.docs.google.com64.233.162.83 0.drive.googl ...

  6. Maven错误之 Check $M2_HOME environment variable

    Eclipse中使用maven插件的时候,运行run as maven build的时候报错 -Dmaven.multiModuleProjectDirectory system propery is ...

  7. 洛谷【AT2827】LIS

    浅谈\(DP\):https://www.cnblogs.com/AKMer/p/10437525.html 题目传送门:https://www.luogu.org/problemnew/show/A ...

  8. 蓝桥杯 算法训练 ALGO-126 水仙花

    算法训练 水仙花   时间限制:1.0s   内存限制:256.0MB 水仙花数 问题描述 判断给定的三位数是否 水仙花 数.所谓 水仙花 数是指其值等于它本身 每位数字立方和的数.例 153 就是一 ...

  9. 【转】link_to中delete无效的问题解决

    问题一 1.问题描述:点击[删除]链接之后,跳到了show页面,完全没有弹出框提示 <%= link_to "删除", product_path(product.id), : ...

  10. CreateMutex实现只能打开一个客户端

    #include "stdafx.h" #include <Windows.h> #include <iostream> using namespace s ...