`

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

 

分享到:
评论

相关推荐

    Java抓取https网页数据

    Java抓取https网页数据,解决peer not authenticated异常。导入eclipse就能运行,带有所用的jar包(commons-httpclient-3.1.jar,commons-logging.jar,httpclient-4.2.5.jar,httpcore-4.2.4.jar)

    java抓取与采集页面内容 喜欢的拿去研究下

    Java 抓取与采集页面内容是一项常见的任务,特别是在大数据分析、搜索引擎优化(SEO)和网络监控等领域。这个压缩包中的两个文件,`HttpCon.java` 和 `ChunkedInputStream.java`,可能包含了实现这一功能的基本组件...

    java网页抓取数据

    Java网页抓取数据是互联网数据挖掘的一个重要领域,它允许开发者通过编程方式获取网页上的信息,从而实现自动化分析、监控或构建智能应用。在Java中,我们通常使用HTTP客户端库和HTML解析工具来实现这一目标。本文将...

    java 抓取微信公众号文章

    java抓取微信公众号最近10篇文章,基于微信搜狗搜索实现。java源码.git 仓库 http://git.oschina.net/hcxy/WechatSpider

    Java实现网页抓取

    在这个Java实现网页抓取的项目中,我们将探讨如何利用Java编程语言来抓取网页内容。下面将详细介绍这个过程涉及的关键知识点。 1. **网络基础知识**:首先,理解HTTP协议是必要的,它是互联网上应用最广泛的一种...

    java抓取网站数据

    ### Java抓取网站数据知识点详解 #### 一、概述 在现代互联网开发中,抓取网站数据是一项重要的技能。无论是进行市场调研、竞品分析还是数据挖掘,掌握如何使用Java来抓取数据都是十分必要的。本篇文章将详细介绍...

    java网页抓取demo

    Java网页抓取是一种技术,主要用于从互联网上自动提取或获取数据。这个"java网页抓取demo"项目提供了实现这一功能的实例代码。项目中的jar包是实现网页抓取的关键依赖库,包括Apache Commons Logging和HTTP Client。...

    java抓取网页数据

    在“java抓取网页数据”这个主题中,我们将深入探讨如何利用Java来抓取并处理互联网上的信息。 首先,我们要了解什么是网络爬虫。网络爬虫(Web Crawler)是自动遍历互联网的程序,通过抓取网页内容并存储在本地,...

    Java抓取网页数据Demo

    本文将详细讨论如何使用Java语言来抓取网页数据,包括两种主要方法:直接抓取原网页内容和处理网页中的JavaScript返回数据。 首先,让我们探讨**抓取原网页**的方法。在Java中,我们可以使用`java.net.URL`类来建立...

    java爬虫webmagic抓取静态页面demo

    Java爬虫WebMagic是开发者常用来抓取网页数据的一个强大工具,尤其对于处理静态页面,它的易用性和灵活性使得在Java开发环境中非常受欢迎。WebMagic的设计理念是模块化,这使得我们可以灵活地组合各个组件来实现不同...

    java抓取任何指定网页的数据

    ### Java抓取任何指定网页的数据 #### 知识点概览 本文主要介绍如何使用Java技术来抓取任何指定网页的数据。重点在于介绍抓取网页数据的方法、解析数据的手段,以及具体实施过程中的关键步骤。 #### 抓取网页数据...

    java抓取网页内容--生成静态页面

    在Java编程中,生成静态页面是一种常见的技术,它涉及到网页内容的抓取和存储。这个程序的主要目的是从指定的URL抓取网页内容,并将其保存为一个HTML文件,即静态页面。下面将详细讲解这个过程涉及的关键知识点。 1...

    java抓取需要验证码登陆后的页面

    java抓取页面 需要验证码才能登陆的网站 抓取登陆后的页面 绝对可用,可以直接运行试下。。。

    Java抓取网络资源并插入数据库

    Java抓取网络资源并插入数据库(附详细代码) 如有不懂处可加qq412546724

    Java抓取网页内容三种方式

    Java 抓取网页内容三种方式 Java 抓取网页内容是指使用 Java 语言从互联网上抓取网页内容的过程。抓取网页内容是数据爬虫和网络爬虫的基础,它广泛应用于数据挖掘、信息检索、机器学习等领域。本文将介绍使用 Java...

    java抓取网页-java工具类

    java抓取网页java工具类java抓取网页java工具类

    java抓取网页的爬虫

    Java抓取网页的爬虫是一种自动化程序,用于从互联网上收集和处理大量数据。它模拟浏览器行为,通过HTTP协议向服务器发送请求,并接收返回的HTML或其他格式的网页内容。在这个过程中,开发者通常会使用到一系列Java库...

    java抓取数据包及网络基础

    Java抓取数据包和网络基础是IT领域中的一个重要分支,主要涉及如何利用Java语言来捕获网络通信中的数据包,并理解网络通信的基本原理。在这个主题中,我们可以学习到以下关键知识点: 1. **网络基础**:首先,我们...

    Java网络屏幕监控(把客户端屏幕截图实时发送到主机端)

    在Java编程领域,实现"Java网络屏幕监控(把客户端屏幕截图实时发送到主机端)"是一项技术挑战,涉及到网络通信、图像处理以及文件传输等多个知识点。在这个项目中,`WnetWScreenRecorder.java`作为客户端负责捕获并...

    Java网页抓取数据

    Java网页抓取数据是互联网开发中的一个重要技能,它允许开发者从网页中提取所需的信息,如新闻、产品数据或用户评论,以供进一步分析或利用。本主题主要涵盖以下几个关键知识点: 1. **网络请求库**:在Java中,...

Global site tag (gtag.js) - Google Analytics