http://www.mamicode.com/,当第一次进行访问时,会发现浏览器正在加载2s中,随后才会显示真正的网页。那么怎么进行爬虫破解呢
首先对网址进行抓包处理可以发现,当出现浏览器正在加载2s时,网页内容其实时post一个表单,
然后查看一下
这些字段一看就很难解决,但是不用担心,打开源代码可以发现,字段就在网页中
最后需要的jschl_answer怎么得来呢,可以在js中发现答案,
可以发现,在这里对jschl-answer进行赋值,
而bEJZJoY.JxroswB字段,也是通过js生成的,所以可以找到这样的一段代码
这一段的js看不懂不要紧,放在浏览器执行一遍,查看结果
然后去跑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写法: