`

解决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
 

 

分享到:
评论

相关推荐

    AppIum抓取方式

    在抓取过程中,了解这些信息对于识别和验证App的身份至关重要。 - **SHA1**:是一种加密哈希函数,用于创建一个160位的哈希值,常用于数字签名标准。 - **MD5**:是另一种常用的哈希函数,生成的是128位的哈希值。...

    HttpClient_学习整理.

    - **页面抓取**:自动获取网页内容,用于数据分析或信息提取。 - **自动化测试**:模拟用户行为进行Web应用测试。 - **服务调用**:与远程服务交互,发送和接收数据。 - **文件上传/下载**:实现文件通过HTTP协议的...

    httpclient 静态化网站 project

    HttpClient是一个强大的HTTP客户端编程工具包,它允许开发者在Java环境中执行HTTP请求,获取网页内容,这对于构建网站爬虫或者数据抓取系统非常有用。 【描述】"静态化首页 子页 一网打尽"表示这个项目不仅限于抓取...

    采集需要登录后的网页(重定向后cookie丢失问题)(

    ### 采集需要登录后的网页(重定向后Cookie丢失问题) 在网络爬虫开发过程中,经常会遇到...通过以上步骤,可以有效地解决登录后页面重定向导致的Cookie丢失问题,进而使得爬虫能够顺利地抓取需要登录才能访问的内容。

    模拟网站登录

    在IT行业中,模拟登录是一项常见的任务,特别是在自动化测试、数据抓取或数据分析等领域。这个话题主要涉及Java编程语言以及JavaScript的解析。以下是对这个主题的详细讲解。 首先,我们需要理解模拟登录的基本概念...

    htmlunit所需要jar包

    1. **httpclient-4.0.1.jar**:这是Apache HttpClient库的一个版本,它提供了HTTP协议的客户端实现,支持各种HTTP方法(如GET、POST),处理重定向,以及身份验证等功能,是HTMLUnit进行网络请求的基础。 2. **...

    httpClient

    4. **身份验证和安全**:HttpClient支持多种认证机制,如Basic、Digest、NTLM等,并且可以处理HTTPS协议,提供SSL/TLS加密。 5. **重试和恢复策略**:当遇到网络问题时,HttpClient可以自动重试请求,或者根据...

    程序员需要知道的16件事

    7. **robots.txt文件**:了解robots.txt文件的作用及如何正确配置它,以控制搜索引擎爬虫的抓取行为。 8. **URL规范化**:确保无论用户是否在URL前加上“www”,网站都能正常运行。使用301 Moved Permanently重定向...

    Scraping

    网页抓取过程中可能会遇到验证码、IP限制、User-Agent检测等问题。应对策略包括: 1. **设置User-Agent**:模拟浏览器发送请求,避免被识别为机器人。 2. **代理IP**:使用代理IP池,以减少单个IP被封禁的风险。 3....

Global site tag (gtag.js) - Google Analytics