爬虫類第五編-Java httpclient採集内網
多くの場合、会社のパソコンはドメインに加入しており、インターネットはエージェントを通じてインターネットに接続されている.この場合、httpclientを使用して外部ネットワークにアクセスする際にエージェントを使用する必要があり、NTLMを通じて検証する必要があるため、httpclientでNTLMプロトコルを使用する必要がある.
NTLMについては、こちらを参考にすることができます.この問題を解決するコードを以下に示します.
時には採集需要は社内の人員が提出し、内網bbsを採集する.
イントラネット権限認証はNTLMに基づく場合があります
そのため、リクエストのたびにヘッダに認証情報を要求する必要があります
参考資料:http://www.cnblogs.com/nbpowerboy/archive/2013/05/19/3086579.html
NTLMについては、こちらを参考にすることができます.この問題を解決するコードを以下に示します.
時には採集需要は社内の人員が提出し、内網bbsを採集する.
イントラネット権限認証はNTLMに基づく場合があります
そのため、リクエストのたびにヘッダに認証情報を要求する必要があります
public static String getWithNTCredential(String url,boolean needProxy,int msTimeOut){
log.info("--get url:[" + url + "]");
String responseBody = null;
HttpMethod getMethod = new GetMethod(url);
if(msTimeOut>0) {
getMethod.getParams().setSoTimeout(msTimeOut);
}
log.info("--queryString:" + getMethod.getQueryString());
HttpClient httpClient = new HttpClient();
if (needProxy) {
String proxyUrl = "10.xx.xx.xx";// IP
String proxyPort ="8080";//
String proxyUser ="xxxx";//
String proxyPassword ="xxxx";//
String domain="xxxx.COM";//
httpClient.getHostConfiguration().setProxy(proxyUrl,Integer.parseInt(proxyPort));
List authPrefs = new ArrayList(2);
authPrefs.add(AuthPolicy.NTLM);
httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT,"Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1");
httpClient.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);
// ,
NTCredentials ntc=new NTCredentials(proxyUser, proxyPassword,proxyUrl,domain);
httpClient.getState().setProxyCredentials(AuthScope.ANY,ntc);
}
try {
int statusCode = httpClient.executeMethod(getMethod);
log.info("http get url:" + getMethod.getURI());
log.info("----http status code:" + statusCode);
if (statusCode == HttpStatus.SC_OK || statusCode==HttpStatus.SC_PARTIAL_CONTENT) {
responseBody = getMethod.getResponseBodyAsString();
}
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
getMethod.releaseConnection();
}
return responseBody;
}
参考資料:http://www.cnblogs.com/nbpowerboy/archive/2013/05/19/3086579.html