1.   本网站所有源码包解压密码:www.youhutong.com
会员登录  帮助问答

PHP用curl抓取网站数据,仿造IP、伪造来源等,防屏蔽解决方案教程

小川 PHP


1、伪造客户端IP地址,伪造访问referer:(一般情况下这就可以访问到数据了)

curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-FORWARDED-FOR:110.85.108.185', 'CLIENT-IP:110.85.108.185']);
curl_setopt($curl, CURLOPT_REFERER, 'http://www.demo.com/test.php');


2、如是上面的还是不行,可能是别人抓到了真实IP,这时候我们就使用代理访问。

#  详细方式
curl_setopt($curl, CURLOPT_PROXY, '112.85.209.72');    //代理服务器地址
curl_setopt($curl, CURLOPT_PROXYPORT, 80);             //代理服务器端口
//curl_setopt($curl, CURLOPT_PROXYUSERPWD, ':'');      //http代理认证帐号,username:password的格式
curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); //使用http代理模式

#  简写方式
curl_setopt($curl, CURLOPT_PROXY, 'http://112.85.209.72:80');


3、还有一种就是用浏览器可以访问,用curl不行。(对方检查了useragent,如果没有就认为是非法来源等验证了)

$useragent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ';
$useragent.= '(KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36';
curl_setopt($curl, CURLOPT_USERAGENT, $useragent);



PHP完整Curl抓取数据函数1:

/**
 * 请求接口
 * @access public
 * @param string $url 请求地址
 * @param array $data 提交参数 没有get 有post
 * @return bean|array
 */
public function send($url='')
{   
    set_time_limit(0);
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-FORWARDED-FOR:127.0.1.1', 'CLIENT-IP:127.0.1.1']);
    curl_setopt($curl, CURLOPT_REFERER, 'http://www.demo.com/demo.php');
    curl_setopt($curl, CURLOPT_PROXY, 'http://127.0.0.1:80');
    $useragent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ';
    $useragent.= '(KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36';
    curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
    if(!empty($data) && is_array($data)){
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    $html = curl_exec($curl);
    if($error=curl_errno($curl)){
        return false;
    }
    curl_close($curl);
    return $html;
}






如果你觉得这篇教程的内容对你有帮助、请支持本站谢谢!  点击进入捐赠通道

转载请注明来源地址:小川编程 » http://www.youhutong.com/index.php/article/index/230.html

( 0 )个小伙伴在吐槽
    登录帐号  如果已经登录请刷新! 发表我的评论
    表情