专栏中心

EEPW首页 > 专栏 > 梅罗对决没了,欧足联的错误?

梅罗对决没了,欧足联的错误?

发布人:laical 时间:2021-12-15 来源:工程师 发布文章

北京时间 12 月 13 日19 点,2021-22 赛季欧冠联赛 1/8 决赛对阵抽签完成,其中曼联(英格兰) VS 巴黎圣日耳曼(法国)万众期待的梅罗对决有望上演。但是令人诧异的是欧足联提出因第三方软件程序出错,技术故障导致抽签结果不公,经过慎重思考后决定重新抽签,并在12 月 13 日22 点重新开始。 其中巴黎圣日耳曼 vs 皇家马德里、国际米兰 vs 利物浦、马德里竞技 vs 曼联均是强强对话,到底谁能进入八强,更多信息可以访问雷速体育https://www.leisu.com获取,下面的程序通过爬虫代理自动采集整理相关比赛信息,可以运行试试:

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 {
        // Change in Java 8 Update 111 以上版本需要下面代码
        // System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "false");
        // System.setProperty("jdk.http.auth.proxying.disabledSchemes", "false");

        // 要访问的目标页面
        String targetUrl = "https://www.leisu.com";


        // 代理服务器(产品官网 www.16yun.cn)
        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);

            // 设置KeepAlive
            // connection.setRequestProperty("Connection", "keep-alive");
            // connection.setRequestProperty("Keep-Alive", "timeout=5, max=100");                

            // 设置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();
    }
}


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: 爬虫代理 java 爬虫程序 动态代理 代理IP 欧冠

相关推荐

Python首次超越Java成第二最受欢迎的编程语言

2020-11-05

TurboJ描述文件

世界排行第一的编程语言:java迎来25岁生日

2020-05-25

想要学好大数据需掌握这十二大技术

2018-10-15

新版编程语言Java 19正式发布:增加支持RISC-V架构和虚拟线程

嵌入式系统 2022-09-27

意法半导体推出STeID Java Card™可信电子身份证和电子政务解决方案

Eclipse 平台入门

资源下载 2007-02-28

索尼爱立信机型开发指南

我从GitHub上看到了编程语言八年变迁史 | Reddit 30.7k

Java Verified Program支持的设备列表

最新编程语言排行榜出炉:Java历史首次被赶出前三

2023年12月编程语言排行榜出炉,C#有望成为2023年度编程语言

2024-01-04

一种基于Java技术的信息家电远程控制方法的实现

2月编程语言榜单:Go首度进入前十名

2024-02-27

微软正在考虑将UWP应用移植至Java:Android也能用

2019-10-09
更多 培训课堂
更多 焦点
更多 视频

技术专区