python模拟登录网站,python模拟app登录
原因
为什么要写这篇文章?
(主要是因为qq群里有人一直在知乎模拟登陆,但是一直没有成功。)然后我抓起包看了一下,发现知乎里的登陆页已经修改过了,难度大大提高了。
开始拿包。
首先打开知乎首页,然后输入账号密码登录(记得输入错误密码)。
这样我们可以看到请求头(请求头如下所示)
我们发现这些请求头不同于普通的请求头(在红框中)。
授权(我感觉应该是js生成的,见后面。
Content-Type(后面还有更多boundary=xxx,那么这是什么意思呢?和后面的请求参数一起看。
Cookie:这个要注意。在登录之前,cookie不为空,表明之前一定有过set-cookie操作。
X-udid和x-sxrftoken都是验证参数,估计可以在网页的源代码中找到。
再次查看请求参数。
您可以看到该参数是以有效载荷的形式出现的
第一次看到这个的人会显得很傻。
这应该与
内容类型:
多部分/形式数据;boundary=-webkitformboundary 2 knsyxgtg 28t 93 VF
让我们一起来看看。
Multipart/form-data是一种表单提交方法,后面的boundary=xxx是一种表单分割方法。那是什么意思?看一个简单的例子你就明白了。
-webkitformBoundary 2 knsyxgtg 28t 93 VF划分了不同的参数,你可以直接忽略他(这个是上面Content-Type后面的boundary决定的,可以随便修改)
去掉分割线后,上面相当于client _ id=C3 cef 7c 66 a 1843 F8 B3 a 9 e6a1e 3160 e 20,
grant _ type=密码。
那么这个有效载荷就很好理解了。
我们来看看,有哪些参数?
参数挺多的。可以看到很多参数是固定的,比如账号、密码、时间戳等等。
有两个client _ ids、签名发生了变化。
开始寻找参数。
授权:
在chrome中,我们直接按ctrl shift f(全局搜索,搜索js,css等。),而且我们可以看到已经搜索过了,直接用js写的。然后,我们只要换个账号重新抢包就可以了,发现authorization的值还是固定的,所以意味着authorization是直接用js写的,不是动态修改的(这时我们已经找到了authorization的值)
cookie:
在登录之前,我们发现cookie值不为空,这意味着打开网页后一定有set-cookie操作。如果要验证的话,首先要打开一个无痕浏览器(主要是清除之前所有的cookies避免干扰),然后再打开http://zhihu.com。我们发现他有几个固定的cookie操作。
如果我们要模拟,最简单的方法就是直接使用requests.session
x-udid,x-sxrftoken:
一般这种验证参数都会在网页源代码里,所以直接查看网页源代码。
可以看到已经找到了,后续只是如何找到而已。您可以使用regular或xpath来定位它。
客户端id:
你会发现client_id和上面的授权完全一样。
签名:
还是用ctrl shift f全局搜索?
可以,但是参数是js动态生成的。
主要是搞清楚怎么加密,然后用Python模拟。
步骤1:下载这个js并格式化它(让代码看起来更好)
第二步:用fiddle替换原来的js,使用新格式化的js。
第三步:慢慢调试。直到我们找到产生它的方法。
一般程序是这样的。
但是如果你的js和我的一样差,你可以直接找到这个加密的js,然后Python就可以执行这个js了。
以上,我们已经找到了所有我们应该寻找的参数,然后我们只需要模拟发送。
请关注微信微信官方账号【python爬虫分享】发送“知乎登录码”看看~ ~ ~
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。