高效率使用隧道轉發爬蟲代理

davidtim發表於2021-09-09

大資料網際網路時代,得網路爬蟲得天下,網路爬蟲採集資料的工作越來越重要。但大資料技術上存留的資料資訊十分極大,只靠人力資源管理進行資料採集已遠不能滿足需求,因此效率高、降低成本的網路爬蟲、變為爬取網站一種新方式。

隧道轉發爬蟲代理加強版爬蟲代理IP是網路爬蟲的必不可少常用工具,可以讓資料採集效率高。那麼如何使用代理IP,才能夠保證 爬蟲技術效率高、快速、精準地採集資料呢?

如何效率高運用爬蟲技術IP代理?

一、高效率爬蟲

高效率的資料採集工作離不開高效率的網路爬蟲,要想網頁爬蟲穩定執行,就必須使用高匿爬蟲代理IP。由於運用了代理網站伺服器,得到了代理網站伺服器的可信性,網頁爬蟲就可以利用大量的代理IP去訪問。當然,要想一切正常爬取還務必一個功能齊全的變換分散式系統,那般才能夠確保操作程式爬取到的資料資訊能夠一切正常儲存運用。

二、使用爬蟲代理

一般情況下,一個網站辨別爬蟲採集最重要的依據就是IP地址。如果網站伺服器檢測到同一個IP地址多次大量發出請求,那這個IP肯定會被限制,將這一IP地址進行禁封。所以就需要運用代理IP,再度進行網路爬蟲採集工作。而運用代理IP可以迅速變換IP,使大家無需懼怕反爬防範措施。

    import okhttp3.*;

    import java.io.IOException;
    import java.net.InetSocketAddress;
    import java.net.Proxy;
    import java.util.concurrent.TimeUnit;

    public class OkHttp {

        // 代理伺服器(產品官網 )
        final static String proxyHost = "t.16yun.cn";
        final static Integer proxyPort = 31111;

        // 代理驗證資訊
        final static String proxyUser = "USERNAME";
        final static String proxyPass = "PASSWORD";

        static OkHttpClient client = null;

        static {
            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));

            Authenticator proxyAuthenticator = new Authenticator() {
                public Request authenticate(Route route, Response response) {
                    String credential = Credentials.basic(proxyUser, proxyPass);
                    return response.request().newBuilder()
                            .header("Proxy-Authorization", credential)
                            .build();
                }
            };

            client = new OkHttpClient().newBuilder()
                    .connectTimeout(5, TimeUnit.SECONDS)
                    .readTimeout(5, TimeUnit.SECONDS)
                    .proxy(proxy)
                    .proxyAuthenticator(proxyAuthenticator)
                    .connectionPool(new ConnectionPool(5, 1, TimeUnit.SECONDS))
                    .build();
        }

        public static Response doGet() throws IOException {
            // 要訪問的目標頁面
            String targetUrl = "";

            Request request = new Request.Builder()
                    .url(targetUrl)
                    .build();
            Response response = client.newCall(request).execute();
            return response;
        }

        public static void main(String[] args) throws IOException {
            Response response1 = doGet();
            System.out.println("GET請求返回結果:");
            System.out.println(response1.body().string());
        }

    }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3349/viewspace-2826830/,如需轉載,請註明出處,否則將追究法律責任。

相關文章