PHP CURL本地可以采集服务器上不能采集解决办法

PHP CURL本地可以采集服务器上不能采集解决办法,今天采集一个站,在本机上写好代码,发到网站服务器上确采集不到数据。这里分析,会不会是目标站对网站做了防采集。

网上搜了下解决办法,这里用PHP CURL伪造IP和来源测试看看。代码如下。

//随机IP
function Rand_IP(){

    $ip2id= round(rand(600000, 2550000) / 10000); //第一种方法,直接生成
    $ip3id= round(rand(600000, 2550000) / 10000);
    $ip4id= round(rand(600000, 2550000) / 10000);
    //下面是第二种方法,在以下数据中随机抽取
    $arr_1 = array("218","218","66","66","218","218","60","60","202","204","66","66","66","59","61","60","222","221","66","59","60","60","66","218","218","62","63","64","66","66","122","211");
    $randarr= mt_rand(0,count($arr_1)-1);
    $ip1id = $arr_1[$randarr];
    return $ip1id.".".$ip2id.".".$ip3id.".".$ip4id;
}

//抓取页面内容
function Curl($url){
        $ch2 = curl_init();
        $user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";//模拟windows用户正常访问
        curl_setopt($ch2, CURLOPT_URL, $url);
        curl_setopt($ch2, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch2, CURLOPT_HTTPHEADER, array(‘X-FORWARDED-FOR:‘.Rand_IP(), ‘CLIENT-IP:‘.Rand_IP()));
//追踪返回302状态码,继续抓取
        curl_setopt($ch2, CURLOPT_HEADER, true);
        curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, true);

        curl_setopt($ch2, CURLOPT_NOBODY, false);
        curl_setopt($ch2, CURLOPT_REFERER, ‘http://www.chinaobd2.com/‘);//模拟来路
        curl_setopt($ch2, CURLOPT_USERAGENT, $user_agent);
        $temp = curl_exec($ch2);
        curl_close($ch2);
        return $temp;
}

php curl伪造来源ip和来路refer实例代码2:

<?php

$postData = array(
    "user" => "root",
    "pwd"  => "123456"
);

$headerIp = array(
    ‘CLIENT-IP:88.88.88.88‘,
    ‘X-FORWARDED-FOR:88.88.88.88‘,
);

$refer = ‘http://www.chinaobd2.com‘;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://localhost/phpdemo/test.php‘);

//伪造来源refer
curl_setopt($ch, CURLOPT_REFERER, $refer);
//伪造来源ip
curl_setopt($ch, CURLOPT_HTTPHEADER, $headerIp);

//提交post传参
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
//...各种curl属性参数设置
$out_put = curl_exec($ch);
curl_close($ch);
var_dump($out_put);

以上代码我在chinaobd2.com网站测试,可行。遇到类似问题,大家可以参考一下。

原文地址:https://www.cnblogs.com/aid12580/p/10546303.html

时间: 2024-10-14 14:49:54

PHP CURL本地可以采集服务器上不能采集解决办法的相关文章

使用UIWebView加载本地或远程服务器上的网页

大家都知道,使用UIWebView加载本地或远程服务器上的网页,sdk提供了三个加载接口: - (void)loadRequest:(NSURLRequest *)request; - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL; - (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)

连接VPN后,本机不能上互联网的解决办法

连接VPN后,本机不能上互联网的解决办法 宽带拨号上了网,正常. 再创建个VPN连接到公司网络,连接正常,可以PING通公司的服务器. 再上网,上不去了! 断开VPN,上网正常,搜索引擎一搜,都说要改一个VPN网络的配置,位置: VPN连接-->属性--网络--IPV4--属性--高级 默认时,“在远程网络上使用默认网关”是勾选上的. 按网上的说法,要去掉这个勾.照办. 再连接VPN,还是不能上网. 细看上网提示,是DNS地址找不到.看来按网上所说的是路由不对的说法靠不住,问题在DNS. 于是还

window7远程桌面到服务器不能复制粘贴解决办法

用远程桌面登陆服务器不能在本机和远程服务器之间粘贴文本了,即不能从本机复制文本粘贴到服务器,也不能从服务器复制文本粘贴到本机. 以下是解决方法之一,试了几次都很管用户: 在服务器上打开任务管理器,查看进程,若存在 rdpclip.exe 进程 ,关闭此进程后,  开始->运行->rdpclip.exe 重新运行此程序,恢复正常. 一般是此进程出了问题导致. window7远程桌面到服务器不能复制粘贴解决办法

Loadrunner上传文件解决办法(大文件)

Loadrunner上传文件解决办法(大文件) 最近再做一个跟海量存储相关的项目测试,需要通过LR模拟用户大量上传和下载文件,请求是Rest或Soap,同时还要模拟多种大小尺寸不一的文件 通常情况下,都是使用简单的post协议即可: 方法一: web_submit_data("importStudent.do", "Action=https://testserver/console/importStudent.do", "Method=POST"

本地远程连接服务器上的Jupyter Notebook设置方法

完整原文:https://hongwan.xyz/archives/ 使用Jupyter可以在本地电脑直接新建和编辑linux服务器的代码,比如python和R,非常方便: 本机为:Win10 服务器:CentOS Linux release 7.3.1611 1.远程服务器安装Jupyter 本人之前安装Anaconda自带了jupyter notebook,因此可以直接使用.如果没有,可通过以下命令安装: pip install jupyter notebook 2.服务器端Jupyter配

Sqlserver通过链接服务器访问Oracle的解决办法

转自http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 一.创建sqlserver链接服务(sqlserver链接oracle)  首先sqlserver 链接oracle可以通过两个访问接口: “MSDAORA” 和“OraOLEDB.Oracle” 1.“MSDAORA”访问接口是由Microsoft OLE DB Provider for Oracle提供的,这里建议不使用此接口进行链接.通过该访问接口建立的链接服务器在进行查询orac

关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法

在网上找了半天解决办法,也没有找到,在此共享我自己的一个问题,不具有普遍性,仅作参考! 问题描述:MATLAB调用xlsread函数出现问题,第一次运行的时候,出现服务器异常,再次运行能够正常读取数据: 在调用xlswrite函数时,一直出现服务器异常状况,不能将数据写入excel表格中. 问题关键:不是MATLAB的原因,问题出在excel软件上! 问题解决:xlswrite函数在调用时会占用excel的com端口,所以要保证在调用时这个端口是开放的,也就是没有被其他程序占用.打开excel(

angularJS+Ionic移动端图片上传的解决办法

前端开发中经常会碰到图片上传的问题,网上的解决办法很多,可是有些图片上传的插件会有一些附属的插件,因此因为一个图片上传的问题可能额需要引入其他插件到项目中,久而久之项目会不伦不类,有时候插件之间也会有一些冲突,所以我们可以自己写一个图片上传的方法. 今天的demo是帮朋友做的一个移动端微信公众号项目,项目架构采用angular+ionic,因为对dom的操作jQuery会方便很多,但是jQuery比较厚重,所以最后选择用轻量级的zepto来对项目dom进行操作. 项目中有一个需求是上传个人作品,

服务器证书无效的解决办法

很多朋友可能都遇到过,登陆网站时,浏览器提示服务器证书无效.例如,登陆百度知道,登陆京东,登陆淘宝. 用IE,或者360安全浏览器,或者360极速浏览器7,都是一样的结果. 笔者也遇到过这个情况. 笔者的电脑,操作系统是WinXP SP2. 经过摸索,发现了两个解决办法. 方法一 使用360极速浏览器8 方法二 将XP的补丁升级到SP3