如何解決爬蟲程序返回429

作爲爬蟲,在採集數據的過程中我們會遇到很多的狀態碼,不同的狀態碼代表不同的意思。那麼我們今天就重點來了解下爬蟲程序返回429意味着什麼?

我們就以淘寶爲例進行分析,淘寶的反爬機制大家都懂,不是一般的嚴格,掛代理是最基本的要求。但是也需要配合更多的反爬策略一起進行纔能有理想的效果。我們先來展示下訪問淘寶的代碼示例。

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 {
    # 代理服務器(產品官網 www.16yun.cn)
    private static final String PROXY_HOST = "u6887.b70.tp.16yun";
    private static final int PROXY_PORT = 31111;

    public static void main(String[] args) {
        HttpClient client = new HttpClient();
        HttpMethod method = new GetMethod("https://www.taobao.com/");

        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();
        }
    }
}
HttpClient4.x
JSoup
JSoup全局代理
Connection
Htmlunit
Okhttp

在我們掛上代理訪問淘寶的時候就返回了超級多的429,如圖:

雖然我們掛的代理高達80併發但是請求還是比較多,超出了併發量,所以幾乎都是返回的429。

這是HTTP\HTTPS的標準應答模式面對這樣的情況我們只有降低程序的併發請求,或者增加更大的併發量。如果不改變就會導致代理通道堵塞,訪問的效果就會更差。

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