python模拟登录网站,python模拟app登录

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: