JAVA配置亿牛云爬虫代理i的方案

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.URL;
import java.util.Random;

    class ProxyAuthenticator extends Authenticator {
        private String user, password;

        public ProxyAuthenticator(String user, String password) {
            this.user     = user;
            this.password = password;
        }

        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(user, password.toCharArray());
        }
    }

    /**
     * 注意:下面代码仅仅实现HTTP请求链接,每一次请求都是无状态保留的,仅仅是这次请求是更换IP的,如果下次请求的IP地址会改变
     * 如果是多线程访问的话,只要将下面的代码嵌入到你自己的业务逻辑里面,那么每次都会用新的IP进行访问,如果担心IP有重复,
     * 自己可以维护IP的使用情况,并做校验。
     */
    public class Demo {
        public static void main(String args[]) throws Exception {
            // 要访问的目标页面
            String targetUrl = "http://httpbin.org/ip";

            // 代理服务器
            String proxyServer = "t.16yun.cn";
            int proxyPort      = 31111;

            // 代理隧道验证信息
            String proxyUser  = "username";
            String proxyPass  = "password";

            try {
                URL url = new URL(targetUrl);

                Authenticator.setDefault(new ProxyAuthenticator(proxyUser, proxyPass));

                // 创建代理服务器地址对象
                InetSocketAddress addr = new InetSocketAddress(proxyServer, proxyPort);
                // 创建HTTP类型代理对象
                Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);

                // 设置通过代理访问目标页面
                HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
                // 设置Proxy-Tunnel
                // Random random = new Random();
                // int tunnel = random.nextInt(10000);
                // connection.setRequestProperty("Proxy-Tunnel",String.valueOf(tunnel));

                // 解析返回数据
                byte[] response = readStream(connection.getInputStream());

                System.out.println(new String(response));
            } catch (Exception e) {
                System.out.println(e.getLocalizedMessage());
            }
        }

        /**
         * 将输入流转换成字符串
         *
         * @param inStream
         * @return
         * @throws Exception
         */
        public static byte[] readStream(InputStream inStream) throws Exception {
            ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = -1;

            while ((len = inStream.read(buffer)) != -1) {
                outSteam.write(buffer, 0, len);
            }
            outSteam.close();
            inStream.close();

            return outSteam.toByteArray();
        }
    }

原文地址:https://blog.51cto.com/14400115/2410127

时间: 2024-10-11 12:20:02

JAVA配置亿牛云爬虫代理i的方案的相关文章

PHP爬虫语言配置亿牛云爬虫代理的方案

// 要访问的目标页面$url = "http://httpbin.org/ip";$urls = "https://httpbin.org/ip"; // 代理服务器 define("PROXY_SERVER", "tcp://t.16yun.cn:31111"); // 隧道身份信息 define("PROXY_USER", "16YUN123"); define("PRO

使用亿牛云爬虫代理常见问题的解决方案

(1) 代理使用失败让对方截图看看代理代码,代理信息是否提取配置正确.重点注意必须使用代理域名,不能是代理服务器IP.要求对方复制demo,然后加上ua随机优化,按照所开代理的请求数,按照300毫秒为单位进行管理,运行程序后统计错误信息和http的状态码.代理链接失败原因:对方是否有防火墙,导致无法链接我们服务器:对方开的代理是否过期.http状态码407原因:代理认证信息失败,让对方严格按照demo配置代理信息 http状态码429原因:请求超过代理限制,严格按照所开代理的请求数,按照300毫

亿牛云爬虫代理设置自主切换IP的方案

1.自主切换IP?该模式适合一些需要登陆.Cookie缓存处理等爬虫需要精确控制IP切换时机的业务. 爬虫程序可以通过设置HTTP头Proxy-Tunnel: 随机数, 当随机数相同时,访问目标网站的代理IP相同. 例如 需要登录,获取数据两个请求在一个IP下,只需对这组请求设置相同Proxy-Tunnel,例如:Proxy-Tunnel: 12345, 该组请求在代理有效期内使用相同的代理IP. 注意 同一时间不同请求组可以设置不同Proxy-Tunnel: 随机数,并发完成数据爬取. 使用相

亿牛云爬虫代理的用户认证模式

用户密码认证?通过用户名和密码的形式进行身份认证,该认证信息最终会转换为Proxy-Authorization 协议头跟随请求一起发出,同时支持通过Authorization协议头进行隧道身份验证. 如用户认证错误,系统会返回401 Unauthorized 或 407 Proxy Authentication Required. 例如 在代码中使用HTTP隧道时,如果代码的 HTTP 请求方法不支持以用户名/密码的形式设置身份认证信息, 则需要手动为每个 HTTP 请求增加Proxy-Auth

使用亿牛云爬虫代理失败的原因

http状态码407原因:代理认证信息失败,让对方严格按照demo配置代理信息http状态码429原因:请求超过代理限制,严格按照所开代理的请求数,按照300毫秒为单位进行管理.如果限制之后,既然大量429,需要优化爬虫策略,应该是目标网站返回的错误提示.http状态码302原因:访问的是https网站,会自动跳转一次,正常现象:访问的http网站,网站拒绝服务,大量302需要优化爬虫策略http状态码403或504原因:少量不影响,大量403或504需要优化爬虫策略http请求超时原因:htt

亿牛云爬虫代理如何保证24小时稳定运行

如何保证7×24小时稳定运行由于代理IP分布于全国,线路多.集群结构复杂,加上部分线路不定期升级,可能会偶尔会出现代理链接不上的情况,平台提供双机热备代理服务器(1分钟左右切换时间)确保代理服务实时在线,同时需要爬虫程序进行相应的优化,有两种方案:(1)代理提取链接自动更新(优先推荐,实时更新)爬虫程序需要开启专用线程,每1分钟访问"代理提取链接",如果发现代理IP和PORT有变化,爬虫程序需要自动更新代理信息.(因为爬虫服务器外网IP变化或其他网络原因,可能会偶尔造成代理信息获取失败

亿牛云爬虫代理IP有效时间如何选择

IP有效时间20秒和180秒该如何选择20秒有效时间更短,但是可以提供的IP数量更多,180秒有效时间更长,但是可以提供的IP数量更少,除非业务采集必须,应该选择20秒代理有效时间,提供更多的IP,避免网站反爬策略.如果请求过多会返回什么如果开通的HTTP\HTTPS代理,系统返回429 Too Many Requests:如果开通的Socket5代理,系统会主动对TCP延迟降速,或者直接拒绝超出部分的TCP请求.这两种处理方式都不会对爬虫的运行产生影响,爬虫会根据返回结果自动重新发起请求,这是

Selenium使用亿牛云爬虫代理的方案

from selenium import webdriverimport stringimport zipfile # 代理服务器 proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理隧道验证信息 proxyUser = "username" proxyPass = "password" def create_proxy_auth_extension(proxy_host, pro

JAVA各种框架使用爬虫代理的正确方案

HttpClient4.ximport java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;import java.net.URI;import java.util.Arrays;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set; import