測試用 curl代理訪問,在伺服器測試可行,本地卻顯示空白的,請教下是什麼情況,代理ip是網上找的,可用
function curl_string ($url,$user_agent,$proxy){ $ch = curl_init(); curl_setopt ($ch, CURLOPT_PROXY, $proxy); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt ($ch, CURLOPT_COOKIEJAR, "c:\cookie.txt"); curl_setopt ($ch, CURLOPT_HEADER, 1); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($ch, CURLOPT_TIMEOUT, 120); $result = curl_exec ($ch); curl_close($ch); return $result;}$url = "http://www.baidu.com";$user_agent = "Mozilla/4.0";$proxy = "http://111.13.109.53:80";$string = curl_string($url,$user_agent,$proxy);echo $string;
回複討論(解決方案)
//資料發送function curl_post($api_server, $request, $proxy = 0,$header=array()) {$ch = curl_init ( $api_server );curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, 'POST' );if(is_array($header) && !empty($header)){curl_setopt ( $ch, CURLOPT_HEADER, 1 ); //設定headercurl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );}curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );curl_setopt ( $ch, CURLOPT_POSTFIELDS, $request ); // $request=jsonif ($proxy) {//通過代理請求$API_CURLOPT_PROXY = "代理IP";curl_setopt ( $ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP );curl_setopt ( $ch, CURLOPT_PROXY, $API_CURLOPT_PROXY );}$result = curl_exec ( $ch );$curl_errno = curl_errno ( $ch );$curl_code = curl_getinfo ( $ch, CURLINFO_HTTP_CODE ); // 擷取http傳回值curl_close ( $ch );if ($curl_code == 200) {return $result;} else {return FALSE;}}
本地又沒代理
錯誤時逾時嗎?我也發生過這類問題,是逾時,如果你也是這錯誤,我倒是可以提點建議
//資料發送function curl_post($api_server, $request, $proxy = 0,$header=array()) {$ch = curl_init ( $api_server );curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, 'POST' );if(is_array($header) && !empty($header)){curl_setopt ( $ch, CURLOPT_HEADER, 1 ); //設定headercurl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );}curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );curl_setopt ( $ch, CURLOPT_POSTFIELDS, $request ); // $request=jsonif ($proxy) {//通過代理請求$API_CURLOPT_PROXY = "代理IP";curl_setopt ( $ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP );curl_setopt ( $ch, CURLOPT_PROXY, $API_CURLOPT_PROXY );}$result = curl_exec ( $ch );$curl_errno = curl_errno ( $ch );$curl_code = curl_getinfo ( $ch, CURLINFO_HTTP_CODE ); // 擷取http傳回值curl_close ( $ch );if ($curl_code == 200) {return $result;} else {return FALSE;}}
本地又沒代理
這個方法測試了,還是顯示空白
錯誤時逾時嗎?我也發生過這類問題,是逾時,如果你也是這錯誤,我倒是可以提點建議
不是逾時,是執行結果為空白,啥都沒
111.13.109.53 北京市 移動
ping 不通
訪問 http://111.13.109.53:80 報不存在
顯然是一個受保護的 ip
訪問受保護的ip肯定不行的,這個ip確實ping不通
localhost:devbox lijunpeng$ ping 111.13.109.53 PING 111.13.109.53 (111.13.109.53): 56 data bytesRequest timeout for icmp_seq 0Request timeout for icmp_seq 1Request timeout for icmp_seq 2Request timeout for icmp_seq 3
111.13.109.53 北京市 移動
ping 不通
訪問 http://111.13.109.53:80 報不存在
顯然是一個受保護的 ip
這個是代理用的ip,在伺服器上使用是有效,可以獲得目標地址的內容,在本機使用顯示空白頁,擷取不到
訪問受保護的ip肯定不行的,這個ip確實ping不通
訪問的是百度,那個ip是代理用的ip.
代理ip都ping不通你怎麼可能根據代理來訪問百度呢?
這個ip要不就是你伺服器的一個內網ip
本地curl開啟了嗎?