解決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客戶端
- Ceph的客戶端丟失資料夾的解決辦法客戶端
- 手機端頁面在專案中遇到的一些問題及解決辦法
- java抓取有驗證的頁面內容Java
- 客戶端內嵌Vue頁面客戶端Vue
- Kubernetes客戶端認證(二)—— 基於ServiceAccount的JWTToken認證客戶端JWT
- WebApi身份認證解決方案(1):Basic基礎認證WebAPI
- 客戶系統報錯:soft lockup的解決辦法
- Kubernetes客戶端認證——基於CA證書的雙向認證方式客戶端
- 將經典頁面轉換成現代客戶端頁面客戶端
- Java OAuth 2.0 客戶端程式設計(三):認證碼授權JavaOAuth客戶端程式設計
- 這些OAuth2客戶端的認證方式你未必瞭解OAuth客戶端
- apache ambari web頁面無法訪問解決辦法ApacheWeb
- ASP.NET Core2利用Jwt技術在服務端實現對客戶端的身份認證ASP.NETJWT服務端客戶端
- “0×80070522客戶端沒有所需的特權”解決辦法客戶端
- Identity Server 4 - Hybrid Flow - MVC客戶端身份驗證IDEServerMVC客戶端
- 增強版實名認證介面-Java身份證實名認證介面程式碼-身份認證Java
- Kubernetes客戶端認證(三)—— Kubernetes使用CertificateSigningRequest方式簽發客戶端證書客戶端
- Https雙向認證Android客戶端配置HTTPAndroid客戶端
- ZooKeeper服務發現客戶端--重連認證客戶端
- SSLSocket實現服務端和客戶端雙向認證的例子服務端客戶端
- session過期,如何主動的更新客戶端的頁面Session客戶端
- Steam客戶端無法登入怎麼辦 新裝w10系統steam客戶端登不上去怎麼解決客戶端
- ORA-12638: 身份證明檢索失敗的解決辦法
- JAX-RSREST客戶端實現基本身份驗證機制REST客戶端
- 官方Chrome擴充套件頁面無法訪問解決辦法Chrome套件
- HTC Vive遇到的問題解決辦法
- vuex頁面重新整理資料丟失的解決辦法Vue
- 當前頁面指令碼發生錯誤的解決辦法指令碼
- iphoneX適配-客戶端H5頁面iPhone客戶端H5
- java抓取HTML頁面的資料(淘寶頁面),JavaHTML
- java websocket 客戶端JavaWeb客戶端
- 解決Python中使用requests庫遇到的身份驗證錯誤Python
- 設定頁面認證(轉)
- 前端學習筆記:通過H5頁面呼叫不同客戶端的原生頁面前端筆記H5客戶端
- 網頁證書錯誤怎麼回事 證書錯誤的解決辦法網頁
- [WCF安全系列]談談WCF的客戶端認證[使用者名稱/密碼認證]客戶端密碼
- C#不安裝Oracle客戶端執行程式的辦法C#Oracle客戶端行程