想擷取一個網站的網站內容,但總是擷取不到該怎麼辦

來源:互聯網
上載者:User
是這個網站: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 去查, 上面的代碼中只發一個, 其他的請樓主自己完成.

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.