爬蟲關於文書網的一些分享

最近看到微信羣裏大家有在聊關於文書網的數據獲取,這個網站一直都是比較難訪問的,數據的獲取更是不容易。所以我們今天就根據這個網站來進行一次分析,分享交流下這種類型的網站該如何去獲取數據。

這裏重點討論下文書網的反爬機制,由於文書網的反爬監控很嚴格(一級驗證碼,二級驗證碼,js反爬,IP檢測)每樣反爬阻礙都是不好應對的,但是也是有解決方法的,比如網站的ip檢測,我們就可以採用億牛雲爬蟲代理加強版方案,每一次request請求都是不同的IP,這樣就不會觸發反爬檢測了。主要是ip質量好,ip池足夠大,基本上每個IP都可以用,而且使用方式還很方便,直接用它的代理服務器發出請求,不用像傳統api模式那樣還需要取出IP,再代入IP進行請求。

速度配置:我們在程序裏面配置的是5個線程,;因爲我用的代理配置是基礎的每秒5個請求數,所以在此設置線程數爲5,如果想爬取更快,獲取更多的數據。可以加大代理請求數,最高可以加到300的請求數,我滴天呀,那得多快啊,那些需要爬幾千萬數據的不是隻要幾天就搞定了嗎。

<?php
    // 要訪問的目標頁面
    $url = "http://httpbin.org/ip";
    $urls = "https://httpbin.org/ip";

    // 代理服務器(產品官網 www.16yun.cn)
    define("PROXY_SERVER", "tcp://t.16yun.cn:31111");

    // 代理身份信息
    define("PROXY_USER", "username");
    define("PROXY_PASS", "password");

    $proxyAuth = base64_encode(PROXY_USER . ":" . PROXY_PASS);

    // 設置 Proxy tunnel
    $tunnel = rand(1,10000);

    $headers = implode("\r\n", [
        "Proxy-Authorization: Basic {$proxyAuth}",
        "Proxy-Tunnel: ${tunnel}",
    ]);
    $sniServer = parse_url($urls, PHP_URL_HOST);
    $options = [
        "http" => [
            "proxy"  => PROXY_SERVER,
            "header" => $headers,
            "method" => "GET",
            'request_fulluri' => true,
        ],
        'ssl' => array(
                'SNI_enabled' => true, // Disable SNI for https over http proxies
                'SNI_server_name' => $sniServer
        )
    ];
    print($url);
    $context = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    var_dump($result);

    // 訪問 HTTPS 頁面
    print($urls);
    $context = stream_context_create($options);
    $result = file_get_contents($urls, false, $context);
    var_dump($result);
?>
curl
GuzzleHttp

總結,如果以上的分享對家有幫助大家就分享學習下,大家有更好的方案也可以留言交流呀!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章