是這個網站:http://www.reg007.com/search。
比如說,我在輸入框裡面輸入了981267080qq.com
他就會跳轉到http://www.reg007.com/search?q=981267080-at-qq.com。
我想用php的file_get_contents擷取http://www.reg007.com/search?q=981267080-at-qq.com的網頁內容,但是總擷取不到。
我應該怎麼去做?
不明白他是怎麼做的。是判斷我的IP還是怎麼弄的。
回複內容:
是這個網站:http://www.reg007.com/search。
比如說,我在輸入框裡面輸入了981267080qq.com
他就會跳轉到http://www.reg007.com/search?q=981267080-at-qq.com。
我想用php的file_get_contents擷取http://www.reg007.com/search?q=981267080-at-qq.com的網頁內容,但是總擷取不到。
我應該怎麼去做?
不明白他是怎麼做的。是判斷我的IP還是怎麼弄的。
應該是請求的時候, 沒帶Cookie, 沒帶 Referer
.
其次真正的搜尋是通過 Ajax 進行的, 即你請求的URL地址還少一部分內容.
運行結果:
代碼:
0){ $method = 'POST'; $headers[] = 'X-Requested-With: XMLHttpRequest'; $headers[] = 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8'; } //如果有傳遞 Cookie if($ck != ''){ $headers[] = 'Cookie: ' . $ck; } //如果有傳遞 Referer if($referer != ''){ $headers[] = 'Referer: ' . $referer; } $opts = array( 'http' => array( 'method'=> $method, 'header'=> implode("\r\n", $headers) ) ); if(count($data) > 0){ $opts['http']['content'] = http_build_query ($data); } $context = stream_context_create($opts); $html = file_get_contents($url, false, $context); return array( $html,//本次請求得到的HTML $http_response_header//本次請求伺服器返回的回應標頭 );}//先請求一次, 從回應標頭中擷取 Cookie$data = request('http://www.reg007.com/');$headers = implode("", $data[1]);preg_match_all('/Set-Cookie: (.+?;)/', $headers, $session);if(count($session) !== 2){ die('擷取Cookie失敗!');}$ck = implode(' ', $session[1]);//得到Cookie$data = request('http://www.reg007.com/search?q=981267080-at-qq.com', $ck, 'http://www.reg007.com/');$html = $data[0];//取出來 HTMLpreg_match('/var h="(.+?)"/', $html, $h);if(count($h) !== 2){ die('擷取Ajax請求Token失敗!');}$h = $h[1];$ck .= ' q=' . urlencode('981267080@qq.com');//這個查詢比較耗時, 會有點慢$data = request( 'http://www.reg007.com/search/ajax', $ck, 'http://www.reg007.com/', array( 'q'=>'981267080@qq.com', 'h'=>$h, 'i'=>0, 't'=>0 ));$result = json_decode($data[0]);var_dump($result);
那個網站顯示的結果, 會發多個 ajax 去查, 上面的代碼中只發一個, 其他的請樓主自己完成.