php伪造ip访问一个网站,可以伪造百度蜘蛛ip
有些行业的站点做的非常隐蔽,哪怕是模拟百度蜘蛛UA也不能访问到真实的百度蜘蛛抓取结果,而且站点还禁止了百度快照的显示,如果想看到它在百度蜘蛛下的内容也是有些办法可以尝试的,比如伪造ip。可以用php的curl模块实现,上代码:
<?php $headers = [ // 构造百度蜘蛛IP' CLIENT-IP: 220.181.108.117', 'X-FORWARDED-FOR: 220.181.108.117',]; $UserAgent="Mozilla/5.0+(compatible;+Baiduspider/2.0)"; //构造百度蜘蛛UA $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.website.com/');//这里写要访问的站点 #curl_setopt($ch, CURLOPT_REFERER, 'http://www.baidu.com/'); // 构造来路 curl_setopt($ch, CURLOPT_USERAGENT, $UserAgent); curl_setopt($ch, CURLOPT_HTTPHEADER , $headers); curl_setopt($ch, CURLOPT_HEADER, false); curl_exec($ch);curl_close ($ch); ?>
把这个代码放到一个php文件里,然后执行这个php文件,就能看到你要访问的网址给你返回的内容。HTTP_CLIENT_IP 是服务器发送的HTTP头,这个参数值是可以随便修改的。
所以,需要明白一点:
如果服务器端用$_SERVER[‘HTTP_CLIENT_IP’]判断来访ip,那么这方法是可行的;
如果用$_SERVER[‘REMOTE_ADDR’]来判断来访ip,那么这方法就失效了。$_SERVER[‘REMOTE_ADDR’]获取的是真实的ip,是你的客户端跟你的服务器“握手”时候的IP。
补充知识:
php中的$_SERVER数组中以HTTP开头的值,都是由客户端(client)传递到服务端的,也就是说这一部分是可以进行伪造的,而$_SERVER[ “REMOTE_ADDR” ]是由服务器传递的,是不能进行伪造的。