解決Java抓取頁面遇到客戶端身份認證的辦法
解決Java抓取頁面遇到客戶端身份認證的辦法,通過JAVA抓取頁面時,有些頁面會返回401(Unauthorized)響應狀態碼和www-authenticate響應頭來要求客戶端進行身份認證。這種認證有兩種方式:BASIC和DIGEST,BASIC驗證要求客戶端對使用者名稱和密碼進行BASE64編碼後傳送給伺服器。DIGEST的認證方式的細節比較複雜,會經過一系列的加密,所以很難被破譯。
JAVA提供一個用於啟用身份認證的類,可以支援HTTP協議中的多個認證方式,這個類是java.net.Authenticator,使用方法如下:
package com.xixuyishi;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.URL;
public class RunHttpSpnego {
static final String kuser = "username"; // 使用者名稱
static final String kpass = "password"; // 密碼
static class MyAuthenticator extends Authenticator {
@Override
public PasswordAuthentication
getPasswordAuthentication() {
return (new PasswordAuthentication(kuser,
kpass.toCharArray()));
}
}
public static void main(String[] args) throws Exception {
Authenticator.setDefault(new MyAuthenticator());
URL url = new URL(args[0]);
InputStream ins = url.openConnection().getInputStream();
BufferedReader reader = new BufferedReader(new
InputStreamReader(ins));
String str;
while ((str = reader.readLine()) != null)
System.out.println(str);
}
只需要建立一個繼續自Authenticator的類,並且重寫其中的getPasswordAuthentication()方法,將使用者名稱和密碼放入方法中,這樣在需要使用身份認證的地方實現這個類就可以了。
轉載至http://www.cn-java.com/www1/?uid-631851-action-viewspace-itemid-61967
相關文章
- 客戶端身份驗證客戶端
- iOS逆向-客戶端認證iOS客戶端
- 手機端頁面在專案中遇到的一些問題及解決辦法
- Kubernetes客戶端認證(二)—— 基於ServiceAccount的JWTToken認證客戶端JWT
- Kubernetes客戶端認證(三)—— Kubernetes使用CertificateSigningRequest方式簽發客戶端證書客戶端
- SharePoint Online 認證Net客戶端物件客戶端物件
- 客戶端內嵌Vue頁面客戶端Vue
- Java身份證實名認證介面解鎖認證新速度Java
- Kubernetes客戶端認證——基於CA證書的雙向認證方式客戶端
- Identity Server 4 - Hybrid Flow - MVC客戶端身份驗證IDEServerMVC客戶端
- Https雙向認證Android客戶端配置HTTPAndroid客戶端
- Java身份證實名認證、身份證識別介面讓您認證任性的“懶”Java
- 這些OAuth2客戶端的認證方式你未必瞭解OAuth客戶端
- ASP.NET Core2利用Jwt技術在服務端實現對客戶端的身份認證ASP.NETJWT服務端客戶端
- 增強版實名認證介面-Java身份證實名認證介面程式碼-身份認證Java
- Android開發中遇到Java.lang.NullPointerException解決辦法AndroidJavaNullException
- 將經典頁面轉換成現代客戶端頁面客戶端
- 解決Python中使用requests庫遇到的身份驗證錯誤Python
- Steam客戶端無法登入怎麼辦 新裝w10系統steam客戶端登不上去怎麼解決客戶端
- iOS路上遇到的錯誤及解決辦法iOS
- win10沒有telnet客戶端怎麼辦 windows10中沒有telnet客戶端的解決教程Win10客戶端Windows
- Nginx配置ssl_client_certificate客戶端認證問題Nginxclient客戶端
- vuex頁面重新整理資料丟失的解決辦法Vue
- Laravel + dingoapi + jwt 使用者認證無法正確指定 guard 的解決辦法LaravelGoAPIJWT
- win10 2004版系統遠端桌面身份無法驗證的解決方法Win10
- java websocket 客戶端JavaWeb客戶端
- 作業系統(AIX)雙因素身份認證解決方案作業系統AI
- 防火牆(360天堤)雙因素身份認證解決方案防火牆
- zookeeper的Java客戶端APIJava客戶端API
- 網頁SSH客戶端的實現網頁客戶端
- Win10系統下eM客戶端無法啟動的解決方法Win10客戶端
- 前端學習筆記:通過H5頁面呼叫不同客戶端的原生頁面前端筆記H5客戶端
- Android so庫防客戶端破解的解決方案Android客戶端
- 客戶端影片渲染目前最理想的解決方案客戶端
- Zookeeper Java 客戶端搭建Java客戶端
- epic登入一直轉圈怎麼辦 快速解決epic客戶端無法登陸的問題客戶端
- [Redis 客戶端整合] Java 中常用Redis客戶端比較Redis客戶端Java
- 2022年steam商店打不開怎麼辦 steam客戶端商店頁面打不開錯誤程式碼118黑屏怎麼解決客戶端
- 無密碼驗證:客戶端密碼客戶端