帝國cms采集列表頁提示【請確認采集頁面存在,系統無法取得信息】內容頁【采集頁面打不開】
用帝國cms后臺自帶采集時,采集規則都寫好了,列表頁鏈接提示:請確認采集頁面存在,系統無法取得信息,在預覽內容是提示【采集頁面打不開】,檢查了一下規則,并沒有問題。
![]() |
![]() |
經過調試之后發現 請求對方的網站返回的是false。
問題定位在了 /e/class/cjfun.php中 ViewGetNewsInfo函數中,$info=ReadFiletext($newspage);這個地方。猜想是對方的網站做了防采集設置。
解決方法
1.我們自定義一個請求方法,偽裝ip,瀏覽器去訪問,將函數放到/e/class/connect.php 中代碼如下:
2.把/e/class/cjfun.php 中的ReadFiletext函數 替換成 pretendIpData (查找一下,一共有三處地方),代碼如下:
- function pretendIpData($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
- "safari 5.1 – MAC"=>"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
- "safari 5.1 – Windows"=>"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
- "Firefox 38esr"=>"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0",
- "IE 11"=>"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko",
- "IE 9.0"=>"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0",
- "IE 8.0"=>"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)",
- "IE 7.0"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)",
- "IE 6.0"=>"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
- "Firefox 4.0.1 – MAC"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
- "Firefox 4.0.1 – Windows"=>"Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
- "Opera 11.11 – MAC"=>"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11",
- "Opera 11.11 – Windows"=>"Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11",
- "Chrome 17.0 – MAC"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
- "傲游(Maxthon)"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)",
- "騰訊TT"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)",
- "世界之窗(The World) 2.x"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",
- "世界之窗(The World) 3.x"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)",
- "360瀏覽器"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)",
- "搜狗瀏覽器 1.x"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)",
- "Avant"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)",
- "Green Browser"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.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);
點個贊! ()