您好,登錄后才能下訂單哦!
這篇“Java目標網站反爬蟲怎么解決”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java目標網站反爬蟲怎么解決”文章吧。
一 前言
在網站的采集過程中,每天都要面對網站的各種反爬蟲技術,然而我們要想拿到數據,就需要針對性的制定很多方法來突破他們的反爬。例如,在采集數據過程中目標網站能識別出你的UserAgent,那你在采集的時候就需要添加很多的UserAgent來進行偽造,躲避它們的識別。有些網站能通過cookie來進行識別,所以cookie也是需要加上。它限制你的ip請求次數,那么你就需要限制你的ip速度或者換ip。更嚴的是會用驗證碼來識別你是人還是機器,那么你就需要模擬人的行為來進行突破。
就以我現在采集的項目為例,有個項目是需要采集大眾點評的數據,相信大家都知道這個網站很難采集的,ip的請求次數限制的很嚴,但是我又需要很多的數據,如果是通過降低我爬蟲的速度那肯定是不行的,這樣的話數據不知道要猴年馬月才能采集完。所以我只能通過不停的切換動態ip來應對。那我需要在很短的時間內采集大量的數據,不能把時間用在管理ip池,驗證他們的可用性上,所以我需要可以在java中可以實現自動切ip,這樣我才可以把時間用在數據的采集上。
在網上找了很多的代理,大多都是提供的api模式的,需要我自己管理ip池,我時間緊數據量又大,這個顯然不適合。找到了幾家提供動態轉發模式的,也測試了幾家,可能是因為這個網站的特殊性也可能是因為他們的代理不穩定效果都不是很理想。
二 接入文檔范例
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是直接復制使用的,里面的代理的配置部分是購買的代理信息里面提供的,對應的配置進去就可以運行。
注意事項
動態轉發是按照每秒的請求量進行的,這個需要根據自己的數據量對應的進行購買使用。還有就是他們有提供標準和加強版,好像是ip池大小不一樣,這個需要具體的向客服了解。根據自己的實際需求進行使用。
以上就是關于“Java目標網站反爬蟲怎么解決”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。