溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java目標網(wǎng)站反爬蟲怎么解決

發(fā)布時間:2022-01-11 09:53:04 來源:億速云 閱讀:557 作者:iii 欄目:編程語言

這篇“Java目標網(wǎng)站反爬蟲怎么解決”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java目標網(wǎng)站反爬蟲怎么解決”文章吧。

一 前言

在網(wǎng)站的采集過程中,每天都要面對網(wǎng)站的各種反爬蟲技術,然而我們要想拿到數(shù)據(jù),就需要針對性的制定很多方法來突破他們的反爬。例如,在采集數(shù)據(jù)過程中目標網(wǎng)站能識別出你的UserAgent,那你在采集的時候就需要添加很多的UserAgent來進行偽造,躲避它們的識別。有些網(wǎng)站能通過cookie來進行識別,所以cookie也是需要加上。它限制你的ip請求次數(shù),那么你就需要限制你的ip速度或者換ip。更嚴的是會用驗證碼來識別你是人還是機器,那么你就需要模擬人的行為來進行突破。

 就以我現(xiàn)在采集的項目為例,有個項目是需要采集大眾點評的數(shù)據(jù),相信大家都知道這個網(wǎng)站很難采集的,ip的請求次數(shù)限制的很嚴,但是我又需要很多的數(shù)據(jù),如果是通過降低我爬蟲的速度那肯定是不行的,這樣的話數(shù)據(jù)不知道要猴年馬月才能采集完。所以我只能通過不停的切換動態(tài)ip來應對。那我需要在很短的時間內(nèi)采集大量的數(shù)據(jù),不能把時間用在管理ip池,驗證他們的可用性上,所以我需要可以在java中可以實現(xiàn)自動切ip,這樣我才可以把時間用在數(shù)據(jù)的采集上。

在網(wǎng)上找了很多的代理,大多都是提供的api模式的,需要我自己管理ip池,我時間緊數(shù)據(jù)量又大,這個顯然不適合。找到了幾家提供動態(tài)轉(zhuǎn)發(fā)模式的,也測試了幾家,可能是因為這個網(wǎng)站的特殊性也可能是因為他們的代理不穩(wěn)定效果都不是很理想。

二   接入文檔范例

JAVA

HttpClient3.1

import org.apache.commons.httpclient.Credentials;import org.apache.commons.httpclient.HostConfiguration;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpMethod;import org.apache.commons.httpclient.HttpStatus;import org.apache.commons.httpclient.UsernamePasswordCredentials;import org.apache.commons.httpclient.auth.AuthScope;import org.apache.commons.httpclient.methods.GetMethod;

import java.io.IOException;

public class Main {

    private static final String PROXY_HOST = "t.16yun.cn";

    private static final int PROXY_PORT = 31111;

    public static void main(String[] args) {

        HttpClient client = new HttpClient();

        HttpMethod method = new GetMethod("https://httpbin.org/ip");

        HostConfiguration config = client.getHostConfiguration();

        config.setProxy(PROXY_HOST, PROXY_PORT);

        client.getParams().setAuthenticationPreemptive(true);

        String username = "16ABCCKJ";

        String password = "712323";

        Credentials credentials = new UsernamePasswordCredentials(username, password);

        AuthScope authScope = new AuthScope(PROXY_HOST, PROXY_PORT);

        client.getState().setProxyCredentials(authScope, credentials);

        try {

            client.executeMethod(method);

            if (method.getStatusCode() == HttpStatus.SC_OK) {

                String response = method.getResponseBodyAsString();

                System.out.println("Response = " + response);

            }

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            method.releaseConnection();

        }

    }}

這個demo是直接復制使用的,里面的代理的配置部分是購買的代理信息里面提供的,對應的配置進去就可以運行。

注意事項

動態(tài)轉(zhuǎn)發(fā)是按照每秒的請求量進行的,這個需要根據(jù)自己的數(shù)據(jù)量對應的進行購買使用。還有就是他們有提供標準和加強版,好像是ip池大小不一樣,這個需要具體的向客服了解。根據(jù)自己的實際需求進行使用。

以上就是關于“Java目標網(wǎng)站反爬蟲怎么解決”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關的知識內(nèi)容,請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI