隧道代理ip使用

简介

隧道代理(Tunnel Proxy)是一种特殊的代理服务,它的工作方式是在客户端与远程服务器之间建立一条"隧道"。这种技术常被用来绕过网络限制或提高网络安全性。

主要功能

  • IP地址变换:隧道代理能够改变客户端的IP地址,使得客户端访问的目标服务器看到的是代理服务器的IP地址,而不是客户端的真实IP地址。
  • 数据加密传输:某些隧道代理服务会提供加密功能,确保数据在客户端与远程服务器之间的安全传输。
  • 动态IP池管理:隧道代理通常由云服务提供支持,具有动态分配IP地址的能力,这意味着可以频繁更换IP以避免被目标服务器封锁。
  • 简化开发流程:对于开发者来说,使用隧道代理可以减少管理IP池的复杂度,从而降低开发成本。

使用

注册隧道代理服务

https://www.kuaidaili.com/?ref=nes3yyyaelhd

互联网上有许多代理服务商,这个以其中一个举例

选择对应方式

按个人所需购买不同方式,若仅为短时非高频使用,建议购买按量付费模式。

代码实现

这里以java语言为例

jsoup

java 复制代码
import java.io.IOException;
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class TestProxyJsoup {
    // 用户名密码, 若已添加白名单则不需要添加
    final static String ProxyUser = "t****";
    final static String ProxyPass = "*****";

    // 隧道域名、端口号
    final static String ProxyHost = "***.***.com";
    final static Integer ProxyPort = '****';

    public static String getUrlProxyContent(String url) {
        Authenticator.setDefault(new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(ProxyUser, ProxyPass.toCharArray());
            }
        });

        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ProxyHost, ProxyPort));

        try {
            // 此处自己处理异常、其他参数等
            Document doc = Jsoup.connect(url).followRedirects(false).timeout(3000).proxy(proxy).get();
            if (doc != null) {
                System.out.println(doc.body().html());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    public static void main(String[] args) throws Exception {
        // 目标网站
        String targetUrl = "https://***.***.com/****";

        // JDK 8u111版本后,目标页面为HTTPS协议,启用proxy用户密码鉴权
        System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");

        getUrlProxyContent(targetUrl);
    }
}

hutool

java 复制代码
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpRequest;

// 代理验证信息
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());
    }
}


public class TestProxyHutool {
    // 用户名密码, 若已添加白名单则不需要添加
    final static String ProxyUser = "t****";
    final static String ProxyPass = "*****";

    // 隧道域名、端口号
    final static String ProxyHost = "***.***.com";
    final static Integer ProxyPort = '*****';

    public static void main(String[] args) {
        // 目标网站
        String url = "https://***.***.com/***";
        // JDK 8u111版本后,目标页面为HTTPS协议,启用proxy用户密码鉴权
        System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
        // 设置请求验证信息
        Authenticator.setDefault(new ProxyAuthenticator(ProxyUser, ProxyPass));

        // 发送请求
        HttpResponse result = HttpRequest.get(url)
                .setHttpProxy(ProxyHost, ProxyPort)
                .timeout(20000)//设置超时,毫秒
                .execute();
        System.out.println(result.body());
    }
}

结束

相关推荐
Me4神秘9 小时前
电信、移动、联通、广电跨运营商网速慢原因
网络
数通Dinner10 小时前
RSTP 拓扑收敛机制
网络·网络协议·tcp/ip·算法·信息与通信
liulilittle11 小时前
SNIProxy 轻量级匿名CDN代理架构与实现
开发语言·网络·c++·网关·架构·cdn·通信
tan77º12 小时前
【Linux网络编程】Socket - UDP
linux·服务器·网络·c++·udp
小白爱电脑12 小时前
光纤的最小弯曲半径是多少?
网络
花落已飘14 小时前
多线程 vs 异步
linux·网络·系统架构
qq_1715388516 小时前
TCP/IP协议精解:IP协议——互联网世界的邮政编码系统
网络·网络协议·tcp/ip
珹洺16 小时前
计算机网络:(七)网络层(上)网络层中重要的概念与网际协议 IP
网络·tcp/ip·计算机网络
兮动人17 小时前
获取终端外网IP地址
java·网络·网络协议·tcp/ip·获取终端外网ip地址
怦然星动_17 小时前
eNSP中实现vlan间路由通信(路由器)
网络·智能路由器