Python爬虫入门教程之——百度模拟登录!爬虫真好玩!

Python爬虫入门教程之——百度模拟登录!爬虫真好玩!,第1张

概述<pstyle=\"margin-top:16px;color:rgb(34,34,34);font-family:\'PingFangSC\',\'HiraginoSansGB\',\'MicrosoftYaHei\',\'WenQuanYiMicroHei\',\'HelveticaNeue\',Arial,sans-serif;background-color:rgb(255

<p ><span >登录百度

<p >先清理浏览器缓存,打开Charles,登录一次百度主页,抓取到登录过程。

<p >

<p >

<p >

<p >

<p ><span >参数分析

<p >确定了需要分析的参数,从哪个开始分析呢?随意吧

<p >

<p >一般有些参数之间是有关系的,比如token的请求参数里需要gID参数

<p >

<p >这里我就不一一去分析参数间的关系了,直接来了啊

<p >

<p ><span >参数 gID

<p >一方面其他参数需要它,另外就是这个参数是完全由本地Js生成的。先看一下这个参数

<p >

<p >搜索一下这个值,没有。那么我们再来搜一下这个name,就是gID,之前说过我们一般是找xxx=这种,先来搜一下gID=

<p >

<p >点击loginv4_9f3632a.Js,然后在JavaScript页签搜索gID=

<p >

<p >有好几个,我圈出了这个getqrcode?请求,为啥捏?看图,我们找到这个请求

<p >

<p >看到请求里的gID值了吗?跟我们登录的gID是一样的,那就确定是这个地方了,gID=e.guIDeRandom,然后在这个脚本里搜一下guIDeRandom

<p >

<p >然后翻译一下这个Js,这......就自己去琢磨吧

<p >

<p >

<p >

<p >

<p >就剩下callback,其他的请求里也需要callback这个

<p >

<p >搜一下bdcbs,为啥要搜这个?这个真的很痛苦,callback搜出来一大片,而且没看出来什么有效数据,值又搜不到,那就搜一半吧,你问我为啥?第六感,不管你信不信,反正我是信了

<p >

<p >

<p >

<p >分析一下这段代码,基本就是c.getUniqueID这个函数了,搜一下这个函数

<p >

<p >oj8k,找到了,代码贴下面,为什么这么写?自己查Js去,当然有更简单了pyv8或者psexecJs

<p >

<p >

<p >Token这里我要再说一下,参数我们分析完了,你以为请求就成功了吗?

<p >

<p >Oh!yeah,之前我们都是得到所有请求参数就访问成功了

<p >

<p >就这里卡了我好长时间。那么碰到这种情况要从那几个点着手呢,首先我想到的是cookies

<p >

<p >然后向上去找Set cookie的地方

<p >

<p >

<p >访问首页得到四个cookie值,H_PS_PSSID、BIDUPSID、PSTM、BAIDUID

<p >

<p >

<p >这里又找到一个BDORZ,首页很简单,没有什么参数,

<p >

<p >注意看这几个参数,就在上面四个cookies中,t是时间戳,参数都搞定了,那么Token的cookies也都搞定了,终于可以成功了,图样图森破,还是不行。MMP,cookies搞定都不行,我还有招,请求头!!!浏览器里直接拷过去,看你还想咋的

<p >

<p >然鹅....,算你狠,不过我不会轻易认输的

<p >

<p >调试他娘的,一遍一遍又一遍,两遍三遍四五遍,各种姿势都试了,终于高潮要来了,特么的请求不一样

<p >

<p >先上图

<p >

<p >浏览器的正常请求

<p >

<p >程序发送的请求

<p >看到不一样了吧,为什么呢?我们在用requests库的时候,get请求我比较习惯用.get(url,params=data),参数用params的方式传入,再来看一下Token请求的参数

<p >

<p >getAPI是空,那很明显

<pre >data = { "getAPI":"","tpl":"mn",....}session.get(url,params=data)<p >然后发送的请求就是/v2/API/?getAPI=&tpl=mn&....,实际上正常的请求是/v2/API/?getAPI&tpl=mn&...,竟然还有这种 *** 作,我真的是第一次碰到,改一下

<pre >data = { "tpl":"mn",...}url = ".../v2/API/?getAPI&{}".format(urlencode(data))session.get(url)<p >到这里才算OK了,最后总结了一下,请求的那个坑、请求头中的Referer、cookies,终于可以说一句OJ8K

<p ><span >参数 dv

<p >为什么要先说这个dv,首先这个我没完全破解,另外就算你用固定值,也不影响结果,这个不能详细说,否则得好几帖子,我们先搜dv=

<p >

<p >切换到JavaScript页签

<p >

<p >我们可以搜一下dv_input这个控件,它是没有的,我就不展示了,然后应该就是window.LG_DV_ARG了

<p >

<p >这里有dvJsinput,上图我们也看到了这个,切换到JavaScript页签看一下

<p >

<p >然后打开浏览器,清空缓存,打开隐身窗口,打开开发者工具,访问百度首页

<p >

<p >观察一下dv值的特点,可以找一些比较有特色的部分搜一下,比如tk、@,这样尽量减少我们调试Js的过程,因为真的很痛苦

<p >

<p >在console里面执行一下这个计算,跟我们dv前面的值是不是类似,那就是它了,不管你是不是我都认为是。然后再搜一下@

<p >

<p >刚才计算的Token+@+Ue(xx),这个肯定就是dv了,至于Ue嘛,我没搞定,不过发现没啥意义,写固定值也可以,也就不用费心去找这个了。



<p >太多了,所以这里就分割一下,剩下的下一篇再继续

<p >

<p >欢迎关注我的博客或者公众号:https://home.cnblogs.com/u/Python1234/ Python学习交流

<p >欢迎加入我的千人交流学习群:125240963

总结

以上是内存溢出为你收集整理的Python爬虫入门教程之——百度模拟登录!爬虫真好玩!全部内容,希望文章能够帮你解决Python爬虫入门教程之——百度模拟登录!爬虫真好玩!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1209027.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存