帝国cms采集列表页提示【请确认采集页面存在,系统无法取得信息】内容页【采集页面打不开】
用帝国cms后台自带采集时,采集规则都写好了,列表页链接提示:请确认采集页面存在,系统无法取得信息,在预览内容是提示【采集页面打不开】,检查了一下规则,并没有问题。
经过调试之后发现 请求对方的网站返回的是false。
问题定位在了 /e/class/cjfun.php中ViewGetNewsInfo函数中,$info=ReadFiletext($newspage);这个地方。猜想是对方的网站做了防采集设置。
解决方法
1.我们自定义一个请求方法,伪装ip,浏览器去访问,将函数放到/e/class/connect.php 中代码如下:
2.把/e/class/cjfun.php 中的ReadFiletext函数 替换成pretendIpData (查找一下,一共有三处地方),代码如下:
- functionpretendIpData($url){
- //给与IP段
- $data=array(
- 119.120.'.'.rand(1,255).'.'.rand(1,255),
- 124.174.'.'.rand(1,255).'.'.rand(1,255),
- 116.249.'.'.rand(1,255).'.'.rand(1,255),
- 118.125.'.'.rand(1,255).'.'.rand(1,255),
- 42.175.'.'.rand(1,255).'.'.rand(1,255),
- 124.162.'.'.rand(1,255).'.'.rand(1,255),
- 211.167.'.'.rand(1,255).'.'.rand(1,255),
- 58.206.'.'.rand(1,255).'.'.rand(1,255),
- 117.24.'.'.rand(1,255).'.'.rand(1,255),
- 203.93.'.'.rand(1,255).'.'.rand(1,255),
- );
- //随机获取一个IP地址
- $ip=$data[array_rand($data)];
- //模拟来源网址
- $referUrl="http://www.baidu.com";
- $agentArray=[
- //PC端的UserAgent
- "safari5.1–MAC"=>"Mozilla/5.0(WindowsNT6.1)AppleWebKit/536.11(KHTML,likeGecko)Chrome/20.0.1132.57Safari/536.11",
- "safari5.1–Windows"=>"Mozilla/5.0(Windows;U;WindowsNT6.1;en-us)AppleWebKit/534.50(KHTML,likeGecko)Version/5.1Safari/534.50",
- "Firefox38esr"=>"Mozilla/5.0(WindowsNT10.0;WOW64;rv:38.0)Gecko/20100101Firefox/38.0",
- "IE11"=>"Mozilla/5.0(WindowsNT10.0;WOW64;Trident/7.0;.NET4.0C;.NET4.0E;.NETCLR2.0.50727;.NETCLR3.0.30729;.NETCLR3.5.30729;InfoPath.3;rv:11.0)likeGecko",
- "IE9.0"=>"Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0",
- "IE8.0"=>"Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.0;Trident/4.0)",
- "IE7.0"=>"Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.0)",
- "IE6.0"=>"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1)",
- "Firefox4.0.1–MAC"=>"Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/20100101Firefox/4.0.1",
- "Firefox4.0.1–Windows"=>"Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1",
- "Opera11.11–MAC"=>"Opera/9.80(Macintosh;IntelMacOSX10.6.8;U;en)Presto/2.8.131Version/11.11",
- "Opera11.11–Windows"=>"Opera/9.80(WindowsNT6.1;U;en)Presto/2.8.131Version/11.11",
- "Chrome17.0–MAC"=>"Mozilla/5.0(Macintosh;IntelMacOSX10_7_0)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11",
- "傲游(Maxthon)"=>"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Maxthon2.0)",
- "腾讯TT"=>"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;TencentTraveler4.0)",
- "世界之窗(TheWorld)2.x"=>"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1)",
- "世界之窗(TheWorld)3.x"=>"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;TheWorld)",
- "360浏览器"=>"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;360SE)",
- "搜狗浏览器1.x"=>"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Trident/4.0;SE2.XMetaSr1.0;SE2.XMetaSr1.0;.NETCLR2.0.50727;SE2.XMetaSr1.0)",
- "Avant"=>"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;AvantBrowser)",
- "GreenBrowser"=>"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1)",
- ];
- $userAgent=$agentArray[array_rand($agentArray,1)];//随机浏览器userAgent
- $header=array(
- 'CLIENT-IP:'.$ip,
- 'X-FORWARDED-FOR:'.$ip,
- );//构造ip
- $curl=curl_init();
- curl_setopt($curl,CURLOPT_URL,$url);//要抓取的网址
- curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
- curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
- curl_setopt($curl,CURLOPT_REFERER,$referUrl);//模拟来源网址
- curl_setopt($curl,CURLOPT_USERAGENT,$userAgent);//模拟常用浏览器的userAgent
- curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);//跳过证书检查
- $info=curl_exec($curl);
- return$info;
- }
- //$text1=ReadFiletext($dourl);
- $text1=pretendIpData($dourl);
上一篇:帝国CMS增加自定义列表设置教程(图文)
下一篇:没有了