分享页面

隧道代理 Python 语言接入指南

发布时间:2023-04-13 14:19

概述

本文档将指引你进行隧道代理的接入,在此文档中使用到的术语将会在下方进行列出。

术语 解释
隧道 自动更换代理 IP 的代理服务
固定时长 服务器将在固定时长后自动切换IP,例如1分钟
通道 使用多个通道同时发起请求,每个通道的IP不同

隧道代理有多种使用方式,具体行为取决于套餐及模式。

  • 普通模式

每次请求都自动切换IP

  • 普通模式指定地区

普通模式下,希望可以指定地区(仅适用于全球HTTP隧道代理),具体参考海外区域编码中的青果编码。

  • 普通模式打标记

普通模式下,希望多个HTTP请求保证代理IP相同,可以给多个请求的代理协议打上相同的标记,并标记这个代理IP的存活时间(不主动设置存活时间则默认为10秒)

  • 固定时长多通道模式

服务器定时切换IP,可同时使用多个通道发起请求,即可以同时使用多个IP

前置知识

在 Python 语言中,通常使用 requests 进行 http/s 代理的设定与请求的发送

Proxy Url Scheme

由协议、用户名、密码、域名、端口几部分组成

例如 http 协议的代理 url

  1. http://[user:password@]hostname:port

pip

Python 的包管理工具,可以简单的进行依赖管理

使用 Python 接入

以下内容假设读者具备基本的 Python 使用经验和对网络协议具有一定的了解。

安装 requests

  1. pip3 install requests

生成 url

普通模式

  1. proxyUrl = "http://%(user)s:%(password)s@%(server)s" % {
  2. "user": authKey,
  3. "password": password,
  4. "server": proxyAddr,
  5. }

普通模式指定地区(仅适用于全球HTTP隧道代理)

  1. proxyUrl = "http://%(user)s:%(password)s:A%(area)d@%(server)s" % {
  2. "user": authKey,
  3. "password": password,
  4. "server": proxyAddr,
  5. "area": area,
  6. }

普通模式打标记

  1. proxyUrl = "http://%(user)s:%(password)s:%(channel)s:%(ttl)d@%(server)s" % {
  2. "user": authKey,
  3. "password": password,
  4. "channel": "channel-1",
  5. "ttl": 20,
  6. "server": proxyAddr,
  7. }

固定时长多通道模式(该模式仅适用于2024年5月17日前购买的隧道代理固定时长多通道产品)

  1. proxyUrl = "http://%(user)s:%(password)s:%(channel)s@%(server)s" % {
  2. "user": authKey,
  3. "password": password,
  4. "channel": "channel-1",
  5. "server": proxyAddr,
  6. }

设置代理地址

http/s 均适用该地址

  1. proxies = {
  2. "http": proxyUrl,
  3. "https": proxyUrl,
  4. }

执行 HTTP/s 请求

https://api.ipify.org 为例

  1. resp = requests.get("https://ip.cn/api/index?ip=&type=0", proxies=proxies)

读取响应实体

resp.text 是字符串类型,可以直接打印

  1. print(resp.text)

示例代码

  1. import requests
  2. proxyAddr = ""
  3. authKey = ""
  4. password = ""
  5. proxyUrl = "http://%(user)s:%(password)s@%(server)s" % {
  6. "user": authKey,
  7. "password": password,
  8. "server": proxyAddr,
  9. }
  10. proxies = {
  11. "http": proxyUrl,
  12. "https": proxyUrl,
  13. }
  14. resp = requests.get("https://api.ipify.org", proxies=proxies)
  15. print(resp.text)