pyhon3模拟登录百度(2)—— 使用IE11理清百度登录内部逻辑和分析请求发送数据
来源:互联网 发布:淘宝一天十个访客 编辑:程序博客网 时间:2024/05/17 06:32
依照思路来,第一步就是难点和重点,搞清楚了网页登录的内部逻辑,才能进行下一步的模拟登录。
这里,我的浏览器是IE11。因为已经看了一篇手把手教学分析登录逻辑的文章,所以这里写的要节省多了。
通过分析发现登录的网址是https://passport.baidu.com/v2/api/?login
查看请求正文信息,通过查看该部分信息可以知道向服务器提交了什么数据,然后分析查找这些数据,最后构造出来这些数据,用程序模拟发送,这样就可以完成了模拟登录。
所以重点就集中了搞清楚要发送那些数据,因为数据太多,有些数据可以不必发送(比如缺省值),有些数据虽然有值但是也不必发(比如登录时间等)但是有些数据的值需要顺藤摸瓜查找出来(这些每次登录值都不同,但是这些值又必须要发送才能登录成功),有些值看起来是固定不变的我们就设置成一样的发送就是了。
以下代码为某次登录百度的请求正文:
- staticpage=http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fv3Jump.html&
- charset=utf-8&
- token=7df2c14c85ae5b4ac28e55671d91f835&
- tpl=mn&
- subpro=&
- apiver=v3&
- tt=1412564377876&
- codestring=&
- safeflg=0&
- u=http%3A%2F%2Fwww.baidu.com%2F&
- isPhone=false&
- quick_user=0&
- logintype=dialogLogin&
- logLoginType=pc_loginDialog&
- idc=&
- loginmerge=true&
- splogin=rate&
- username=xxxxxxx&
- password=eqCh%2BjZOsT7dfR%2FLeCrmaU95YOejUlifw5PM1Yt9i0ahYPbgMGHhW%2F3eeGbA3MZpKPVKS8ce9sFNKuStEJr8KTDnzH1zxEL9OyH655VBJ139Jip%2F2clofLPqVfsp1oTSfwFkCSpifCEN9t%2BeM2lAWqbfcoK5O7dbx1N6NjPo1%2FQ%3D&
- verifycode=&
- mem_pass=on&
- rsakey=QNxGSHNrbmjoknFRAniMpPQDfCQaliA8&
- crypttype=12&
- ppui_logintime=448151&
- callback=parent.bd__pcbs__md9bav
分析数据:
staticpage=http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fv3Jump.html&
看上貌似乱码后的URL,其实是编码后的结果。在请求发送数据时我们必须用到正规的URL,所以需要找到原先正确的URL,而Python已有相关的模块可以处理。
- import urllib.parse
- encodeUrl = "http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fv3Jump.html"
- decodeUrl = urllib.parse.unquote(encodeUrl)
- print(decodeUrl)
输出可以得到URL为:http://www.baidu.com/cache/user/html/v3Jump.html
charset=utf-8
摆明编码的值,固定的。按此值发送。
token=7df2c14c85ae5b4ac28e55671d91f835
这个token后面的值一看就不像固定的值,要与不要会不会影响发送,后面才知道,暂时忽略。
tpl=mn
看似固定值,按此值发送。
subpro=
省略。
apiver=v3
API版本号,固定值。按此值发送。
tt=1412564377876
这个token后面的值一看就不像固定的值,要与不要会不会影响发送,后面才知道,暂时忽略。
codestring=
省略。
safeflg=0
安全标志?固定值,按此值发送。
u=http%3A%2F%2Fwww.baidu.com%2F
一个固定URL,但是看似不重要。省略。
isPhone=false
是否手机登录,我用PC,当然False,按此值发送。
quick_user=0
不明,看似固定值,按此值发送。
logintype=dialogLogin
固定值,按此值发送。
logLoginType=pc_loginDialog
固定值,按此值发送。
idc=
省略。
loginmerge=true
不明,按此值发送。
splogin=rate&
不明,按此值发送。
username=xxxxxxxx
用户名,这个就需要填写你的用户名。这里可以用个变量来代替。
password=eqCh%2BjZOsT7dfR%2FLeCrmaU95YOejUlifw5PM1Yt9i0ahYPbgMGHhW%2F3eeGbA3MZpKPVKS8ce9sFNKuStEJr8KTDnzH1zxEL9OyH655VBJ139Jip%2F2clofLPqVfsp1oTSfwFkCSpifCEN9t%2BeM2lAWqbfcoK5O7dbx1N6NjPo1%2FQ%3D
一看密码就是被处理过的,看来需要知道密码如何被处理后,才能正确发送密码值。
verifycode=
省略。
mem_pass=on
是否记住下次登录。按此值发送。
rsakey=QNxGSHNrbmjoknFRAniMpPQDfCQaliA8
RSA的值一想就不是固定的,看来也要想办法得到这个值。
crypttype=12
不明,按此值发送。
ppui_logintime=448151
貌似一个登陆时间的值,省略。
callback=parent.bd__pcbs__md9bav
调用函数,试了几次登录,这个值也是随机的?暂时忽略。
把这些要发送的数据总结成一个清晰的Python代码中如下:
- postDict = {
- "staticpage" : "http://www.baidu.com/cache/user/html/v3Jump.html",
- "charset" : "utf-8",
- # "token" :"7df2c14c85ae5b4ac28e55671d91f835", #暂时省略
- "tpl" : "mn",
- #"subpro" : "",
- "apiver" : "v3",
- # "tt" : "1412564377876", #暂时省略
- # "codestring" : "",
- "safeflg" : "0",
- # "u" : "http%3A%2F%2Fwww.baidu.com%2F&", #暂时省略
- "isPhone" : "false",
- "quick_user" : "0",
- "logintype" : "dialogLogin",
- "logLoginType" : "pc_loginDialog",
- # "idc" : "",
- "loginmerge" : "true",
- "splogin" : "rate",
- # "username" : username, # 用户名
- # "password" : password, # 用户密码
- "verifycode" : "",
- "mem_pass" : "on",
- # "rsakey" : "QNxGSHNrbmjoknFRAniMpPQDfCQaliA8", #暂时省略
- "crypttype" : "12",
- # "ppui_logintime": "448151",
- # "callback" : "parent.bd__pcbs__md9bav" #暂时省略
- };
综上,剩下的就是找出那些拿不准的值了。其中密码进行了加密,所以加密方法和另一个rsakey参数是急需解决的两个东西。解决这两个问题,留待下一篇阐述。
- pyhon3模拟登录百度(2)—— 使用IE11理清百度登录内部逻辑和分析请求发送数据
- pyhon3模拟登录百度(1)—— 相关学习资料收集及编程思路整理
- 使用C#访问百度指数:模拟发送请求/得到响应数据(2)
- python模拟百度登录
- requests 模拟登录百度
- requests模拟登录百度
- 使用C#访问百度指数:模拟发送请求/得到响应数据(2) (8月份已过时)
- 百度登录算法分析和实现(上 - 分析篇)
- AAuto - 百度自动登录 (模拟操作)
- Python模拟百度登录实例
- selenium模拟登录百度指数
- Python模拟登录百度主页
- 使用HtmlUnit登录百度
- 百度登录算法分析和实现(中 - 整理篇)
- 百度登录算法分析和实现(下 - 实现篇)
- 使用HttpClient登录到百度
- Python模拟登录百度贴吧
- 模拟登录百度做一些事
- 【C++】【STL】STL学习之旅二:模板
- Anatomy of a Program in Memory
- 【C++】学习C++和编程的50个观点
- halcon学习6,可视化条码扫描的例子学习
- hdu 5063 Operation the Sequence(Bestcoder Round #13)
- pyhon3模拟登录百度(2)—— 使用IE11理清百度登录内部逻辑和分析请求发送数据
- Socket通信原理简介
- codevs 1225 八数码难题 题解
- SSL证书技术服务那家强,请去山东找蓝翔
- 使用 HttpClient 和 HtmlParser 实现简易爬虫
- halcon方法学习之blob分析
- java安全性编程
- 关于利用asi上传图片,服务器那边接收不到数据
- PKUOJ分类