很久以前研究过中国土地市场网(www.landchina.com),当时只抓取了一个城市的数据2万多条的数据,当时只是觉得服务器经常宕机,还没有发现有怎么反爬虫的限制。最近空闲准备把所以的数据抓取下来(大约250万的成交公告),发现网站做了些防爬虫的策略,同时发现网站快了很多,同时访问也变成了https协议。
经过几天的摸索主要解决网站的三种防止爬虫策略
1、通过cookie验证,三次跳转,两次取得cookie的简单安全策略。
2、通过cookie验证,通过图片验证码取得cookie认证的高级安逸认识。
第一种和第二种都是cookie访问限制,也只有带有合法的cookie才能访问数据,两者是切换限制;这里我先说明第一种解决方案,后期在讲解后面的方案。
第一次跳转:
当我们直接请求链接 https://www.landchina.com/
返回数据:
<script type="text/javascript"> function stringToHex(str) { …… } function YunSuoAutoJump() { …… var curlocation = window.location.href; if ( - 1 == curlocation.indexOf("security_verify_")) { document.cookie = "srcurl=" + stringToHex(window.location.href) + ";path=/;"; } self.location = "/?security_verify_data=" + stringToHex(screendate); } </script> <script> setTimeout("YunSuoAutoJump()", 50); </script>
看他的基本功能是在cookie添加了一个srcurl参数;然后在跳转到该链接添加security_verfy_data=参数;
并且返回cookie参数:security_session_verify=
第二次跳转:
通过第一次YunSuoAutoJump()方法并且带有cookie访问https://www.landchina.com/?security_verfy_data=xxxxx
cookie包括security_session_verify和srcurl两个
返回数据:
<script type="text/javascript"> function stringToHex(str) { …… } function YunSuoAutoJump() { …… var curlocation = window.location.href; if ( - 1 == curlocation.indexOf("security_verify_")) { document.cookie = "srcurl=" + stringToHex(window.location.href) + ";path=/;"; } self.location = "/" ; } </script> <script> setTimeout("YunSuoAutoJump()", 50); </script>
看返回的还是一次跳转,和第一次参不多,其目的也就是为了再次取得cookie
并且返回cookie参数:security_session_mid_verify=
第三次跳转:
这里就跳转https://www.landchina.com/ 网站地址,这是这里的cookie多带了两个security_session_verify和security_session_mid_verify 其中只要security_session_mid_verify就可以;后期访问直接用security_session_mid_verify做完cookie值访问就可以;并且不用每次验证,只要当security_session_mid_verify失效过后在取得security_session_mid_verify就可以。
总结:通过两次取得cookie,三次跳转访问认证验证;我们就可以取得认证的cookie;当然我们也可以用模拟浏览器selenium浏览器自动进行跳转;然后取得浏览器中的cookie,两种方式都可行。当知己用请求的方式更快捷,并发性更高,而且加上IP代理更方便.
这里就不方便公布源码;,如果需要相关的代码和数据,可以联系作者。
QQ号: 397713572 邮 箱: tngou@tngou.net QQ群: 277916496 手 机: 13518355196(同微信号)
可以一起做相关数据交流,和分析。
数据 通过 网站 爬虫 限制 中国土地市场