HifJzoc9 和 80T 的获取思路

HifJzoc9HM4hUBT0dDOn80T 的获取思路

第一个

直接去看控制台请求,就会找到下面的这个请求,这个请求返回的就是列表内容python

可是直接去找 HifJzoc9 是找不到。说明这是被后来加上去的。经过拦截 XMLHttpRequest ,将生成的参数加到请求参数里。并且在这个网站,这个参数的名字也是 js 动态生成。web

下图是 cookie80T 的名字的生成地方。看好了就是名字。不要想太多。具体破解还未完成。chrome

因此呢一种是增长 XHR 断点,另外一种就是使用下面的函数。这个函数我使用的时候是用谷歌插件的方式。跨域

分享一个钩子函数浏览器

var code = function () { var open = window.XMLHttpRequest.prototype.open; window.XMLHttpRequest.prototype.open = function open(method, url, async) { if (url.indexOf("HifJzoc9") > -1) { debugger; } };};var script = document.createElement('script');script.textContent = '(' + code + ')()';(document.head || document.documentElement).appendChild(script);script.parentNode.removeChild(script);

这个函数能够请求发送以前将该请求拦截。安全

既然能够拦截到请求,那就意味能够拿到当前环境下生成的加密参数。微信

若是常常看这个网站的话,你就会注意到,他会每隔几秒就会发起这样的请求cookie

因此个人拦截代码就能够一直使用,一直拦截不让他发起请求。从下图就能够看到,请求并无发出去。app

取消请求scrapy

window.XMLHttpRequest.abort();

url 参数取到了,就差 cookie 了。

第二个

直接在控制台打印 cookie

这样打印出来实际上是只有 80T 的,并无 80S.

这是由于 HTTPOnly 的缘由。具体的能够去百度查查,如今基本大网站都有这个,也是为了安全

这个能够使用谷歌插件解决,能够看看谷歌文档。

谷歌插件提供了一个方法。固然这个方法须要在背景页中使用。填写 URL后就能够获取他的全部 cookies

chrome.cookies.getAll({url: "http://*.cn/"}, function (cookies) {});

80T 也是一直在刷新的,因此只须要一直获取提交到你的爬虫就完成了。

总结

一、拦截 XMLHTTPRequest 请求

二、获取到已经生成加密的参数后的 url

三、取消请求

window.XMLHttpRequest.abort();

四、获取 cookie

五、将获取到 cookie 和 url 发送给爬虫。(这一块都是经过插件的背景页作的。网站有跨域限制,因此最后的发送操做都是在背景页。具体的你们多看看插件,挺简单的)

六、爬虫请求数据。

完整流程

谷歌插件 发送加密后的 url 以及 cookie  到接口,爬虫经过接口获取到值进行数据抓取。很简单。

并且这网站只要你能获取到这两个东西,剩下就好说了,请求多了目前发现就只有个图片验证码。

缺点就是:

若是须要大量抓取的话,就须要不少浏览器。

优势就是:

不用破解 js

还有一种思路就是经过 selenium 、pyppeteer、puppeteer 执行 js ,生成加密参数后,再取消请求。这样就会更快的生成你想要的东西。也是挺爽的。

可是这种的我不知道如何再去取消请求,而且将参数拦截获取出来。若是有大佬知道的,给我指点一下,很是感谢!




本文分享自微信公众号 - Python爬虫scrapy(python_scrapy)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索