用curl抓取网站数据,仿造IP、防屏蔽终极强悍解决方式
最近在做一些抓取其它网站数据的工作,当然别人不会乖乖免费给你抓数据的,有各种防抓取的方法。不过道高一尺,魔高一丈,通过研究都是有漏洞可以钻的。
下面言归正传,先说一种常见的方式,伪造来源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");
3、另外还有一种情况,就是用浏览器可以访问,用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");
完工~
本站遵循CC协议署名-非商业性使用-相同方式共享
转载请注明来自:稚子的成长博客
- 下一篇: PHP通过正则表达式获取网页charset编码
- 上一篇: 用php实现简单的内容采集器
相关推荐
- 使用PIE对IE进行CSS3兼容介绍和经验总结
- Posted on 04月26日
- 用条件注释判断浏览器
- Posted on 04月10日
- supervisor应用初体验
- Posted on 09月29日
- LNMP一键安装方法
- Posted on 03月26日