美文网首页
Java/Jsoup Proxy Auth

Java/Jsoup Proxy Auth

作者: 瓜尔佳_半阙 | 来源:发表于2019-04-26 17:57 被阅读0次

最近在爬一些国外数据,需要挂代理请求一些网站,然而由于代理机器的验证问题,导致设置代理失败,几番面向搜索编程过后,发现Java自带一系统级对象,号曰:Authenticator,当你调用它的setDefault()时,你就已经成功了

上代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.PasswordAuthentication;
import java.net.URL;

public class AccessPasswordProtectedURLWithAuthenticator {
    public static void main(String[] args) {
        try {
            // Sets the authenticator that will be used by the networking code
            // when a proxy or an HTTP server asks for authentication.
            Authenticator.setDefault(new CustomAuthenticator());
            URL url = new URL("http://www.secure-site-example.com:80/");
            // read text returned by server
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
            String line;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
            in.close();    
        }
        catch (MalformedURLException e) {
            System.out.println("Malformed URL: " + e.getMessage());
        }
        catch (IOException e) {
            System.out.println("I/O Error: " + e.getMessage());
        }
    }
     
    public static class CustomAuthenticator extends Authenticator {
        // Called when password authorization is needed
        protected PasswordAuthentication getPasswordAuthentication() {
            // Get information about the request
            String prompt = getRequestingPrompt();
            String hostname = getRequestingHost();
            InetAddress ipaddr = getRequestingSite();
            int port = getRequestingPort();
            String username = "username";
            String password = "password";
            // Return the information (a data holder that is used by Authenticator)
            return new PasswordAuthentication(username, password.toCharArray());        
        }    
    }
}

正常我们如果没有什么特殊的需求,这么写就行

Authenticator.setDefault(new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(userName, password.toCharArray());
            }
        });

因为这个是系统级的,所以在所有请求发送前设置这个都是有效的,但我心里总有些不安,感觉好像有什么隐患。。。

相关文章

  • Java/Jsoup Proxy Auth

    最近在爬一些国外数据,需要挂代理请求一些网站,然而由于代理机器的验证问题,导致设置代理失败,几番面向搜索编程过后,...

  • Randall | 四、Jsoup

    一、Jsoup是什么? 引用Jsoup官网的介绍: jsoup: Java HTML Parser jsoup i...

  • Grafana 开启免登录

    配置以下环境变量,关闭验证GF_AUTH_PROXY_ENABLED: trueGF_AUTH_ANONYMOUS...

  • jsoup 简单的使用

    jsoup: Java HTML Parserjsoup is a Java library for workin...

  • Auth0 Java JWT

    本文介绍 Auth0 Java JWT 的使用方法。 目录 Auth0 Java JWT 简介 代码示例 Auth...

  • Jsoup 学习

    了解Jsoup Jsoup使用一个解析HTML文件的Java包。利用Jsoup,可以实现以下内容的抽取 文本抽取 ...

  • HTML&XML解析器--Jsoup

    HTML&XML解析器 一.Jsoup概述 Jsoup简介jsoup是一款Java的HTML解析器,可直接解析某个...

  • Jsoup初探

    简介 jsoup is an open-source Java library of methods design...

  • JDK动态代理【3】Proxy类和InvocationHandl

    一、Proxy类,java.lang.reflect.Proxy * {@code Proxy} provides...

  • Java爬虫之Jsoup 基础语法

    Jsoup介绍: Jsoup 是一个 Java 的开源HTML解析器,可直接解析某个URL地址、HTML文本内容。...

网友评论

      本文标题:Java/Jsoup Proxy Auth

      本文链接:https://www.haomeiwen.com/subject/dtrpgqtx.html