python浏览器等待5s的反爬虫

http://www.mamicode.com/,当第一次进行访问时,会发现浏览器正在加载2s中,随后才会显示真正的网页。那么怎么进行爬虫破解呢

首先对网址进行抓包处理可以发现,当出现浏览器正在加载2s时,网页内容其实时post一个表单,

然后查看一下

python浏览器等待5s的反爬虫_第1张图片

这些字段一看就很难解决,但是不用担心,打开源代码可以发现,字段就在网页中

python浏览器等待5s的反爬虫_第2张图片

最后需要的jschl_answer怎么得来呢,可以在js中发现答案,

python浏览器等待5s的反爬虫_第3张图片

可以发现,在这里对jschl-answer进行赋值,

而bEJZJoY.JxroswB字段,也是通过js生成的,所以可以找到这样的一段代码python浏览器等待5s的反爬虫_第4张图片

这一段的js看不懂不要紧,放在浏览器执行一遍,查看结果

python浏览器等待5s的反爬虫_第5张图片

然后去跑bEJZJoY.JxroswB-=+((!+[]+!![]+!![]+!![]+!这一段的大js就行了。将最后得到的值,赋值给表单的元素

a.value = (+bEJZJoY.JxroswB).toFixed(10)

在执行大段js的时候会发现:Cannot read property 'innerHTML' of null错误,原来是

document.getElementById(k).innerHTML,而k可以发现是cf-dn-xGgX

k代表的内容为

因此很容易拿到结果了。

因此思路就出来了,只需要访问第一次访问网页,将js抠出来,获取表单数据,模拟请求表单就能得到cookie,在进行请求,就可以获取到正常的代码

网页中的js代码隐藏的表单数据是一段jother生成,所以只需要python去执行这一段js就可以得到内容,在post一下表单就能成功爬取

# 最后补充下这样的js写法:

jother编码

你可能感兴趣的:(逆向分析js的爬虫)