最近在做一些抓取其它網站數據的工作,當然別人不會乖乖免費給你抓數據的,有各種防抓取的方法。不過道高一尺,魔高一丈,通過研究都是有漏洞可以鑽的。下面的例子都是用PHP寫的,不會用PHP來curl的孩紙先學習一下這塊再往下看,可以參考這篇文章:http://blog.csdn.net/linglongwunv/article/details/8020845
下面言歸正傳,先說一種常見的方式,偽造來源IP,這也是好多刷票朋友常用的方法:
1、簡單一點的可以在header偽造X-FORWARDED-FOR,並偽造referer,代碼如下:
- curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:111.222.333.4', 'CLIENT-IP:111.222.333.4'));
- curl_setopt($ch, CURLOPT_REFERER, "http://www.test.com");
2、上面的方法大多數能糊弄過去,但也有抓到了真實IP的。就使用代理,麻煩在於你有一個有效的代理ip和端口號,有的還需要用戶名密碼,代碼如下:
- curl_setopt($ch, CURLOPT_PROXY, "http://111.222.333.4:110");
另外還有一種情況,就是用瀏覽器可以訪問,用curl就是不行,發現對方檢查了useragent,如果沒有就認為是抓取等非法來源,那么我們就自己在header加上useragent,代碼如下:
- curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11");