具有基本访问身份验证的 Jsoup 连接

2022-09-02 02:51:29

在 Jsoup 中,有没有办法从具有基本访问身份验证的网站加载文档?


答案 1

使用 HTTP 基本访问身份验证时,您需要发送标头以及值 。Authorization"Basic " + base64encode("username:password")

例如:

String username = "foo";
String password = "bar";
String login = username + ":" + password;
String base64login = Base64.getEncoder().encodeToString(login.getBytes());

Document document = Jsoup
    .connect("http://example.com")
    .header("Authorization", "Basic " + base64login)
    .get();

// ...

(为了简洁起见,getBytes() 中字符编码的显式规范被省略,因为登录名和传递通常是普通的US-ASCII;此外,Base64总是生成US-ASCII字节)


答案 2
//Log in
Response res = Jsoup
    .connect("url")
    .data("loginField", "login")
    .data("passwordField", "password")
    .method(Method.POST)
    .execute();

Document doc = res.parse();


//Keep logged in
Map<String, String> cookies = res.cookies();

Document doc2 = Jsoup
    .connect("url")
    .cookies(cookies)
    .get();

推荐