您好,登錄后才能下訂單哦!
這篇“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è)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。