浅谈网络代理 proxy
字数 1440 2025-08-22 12:22:30
网络代理(Proxy)技术详解与实践指南
一、代理技术概述
IP代理是一种网络技术,通过这种技术用户可以隐藏其真实IP地址,使用另一个IP地址代表自己进行互联网活动。代理服务器作为中间节点转发网络请求,主要应用于以下场景:
- 批量提交漏洞
- 批量注册账号
- 批量扫描任务
- 隐私保护
- 访问限制内容
二、代理类型详解
1. HTTP/HTTPS代理
- HTTP代理:专为Web端设计,处理HTTP协议流量
- HTTPS代理:在HTTP代理基础上添加了SSL/TLS加密层
- SOCKS代理:支持最广泛的协议类型,可处理各种网络流量
2. 代理认证方式
- 匿名代理:无需认证
- 私密代理/独享代理:需要用户名密码认证
- 格式示例:
http://username:password@proxy_ip:port/
三、代码中使用代理
Python requests库示例
import requests
proxies = {
'http': 'socks5://ip:port',
'https': 'socks5://ip:port'
}
r = requests.get('https://www.taobao.com/help/getip.php', proxies=proxies, timeout=3)
print(r.text)
需要认证的代理使用
proxies = {
"http": "http://%(user)s:%(pwd)s@%(proxy)s/" % {'user': username, 'pwd': password, 'proxy': proxy_ip},
"https": "http://%(user)s:%(pwd)s@%(proxy)s/" % {'user': username, 'pwd': password, 'proxy': proxy_ip}
}
四、代理测试方法
1. 基本测试
- 访问
https://www.taobao.com/help/getip.php查看当前IP - 使用快代理接口测试:
https://dev.kdlapi.com/testproxy
2. 测试要点
- IP是否成功切换
- 能否正常访问目标网址
- 响应时间是否符合要求
五、抓包代理工具
常见抓包代理工具特征:
- BurpSuite:响应中包含"Welcome to Burp Suite"
- Fiddler:标题为"Fiddler Echo Service"
六、获取免费代理
1. 公开代理来源
- 通过FOFA等网络空间搜索引擎寻找
- 搜索语法示例:
protocol="socks5" && "Authentication"
2. 使用FOFA搜索示例
from fofa_hack import fofa
result_generator = fofa.api('protocol="socks5" && "Authentication"', endcount=1000)
for data in result_generator:
for proxy in data:
proxies = {'http': "socks5://{}".format(proxy), "https": "socks5://{}".format(proxy)}
try:
r = requests.get('https://www.taobao.com/help/getip.php', proxies=proxies, timeout=3)
if 'ipCallback' in r.text:
print(fr'[*] success: ' + str(proxies))
except Exception as e:
pass
七、搭建代理池
推荐使用现成解决方案如proxy_pool项目,避免重复造轮子。
1. proxy_pool部署步骤
- 安装Redis和Python
- 克隆项目:
git clone git@github.com:jhao104/proxy_pool.git - 修改配置文件
settings.py:HOST = "0.0.0.0" # IP PORT = 5000 # 监听端口 DB_CONN = 'redis://:pwd@127.0.0.1:8888/0' # Redis配置 - 启动服务:
# 启动调度程序 python proxyPool.py schedule # 启动webApi服务 python proxyPool.py server
2. proxy_pool API接口
- 获取代理:
http://127.0.0.1:5010/get/ - 查看所有接口:直接访问
http://127.0.0.1:5010
3. proxy_pool核心机制
代理采集
在settings.py中配置采集源:
PROXY_FETCHER = [
"freeProxy01", # 代理网站1
"freeProxy02", # 代理网站2
# ...共11个默认采集源
]
代理验证
采用三级验证机制:
- 格式验证:检查IP地址和端口格式是否正确
IP_REGEX = re.compile(r"(d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}") - HTTP验证:测试代理能否访问HTTP网站
r = head(conf.httpUrl, headers=HEADER, proxies=proxies, timeout=conf.verifyTimeout) - HTTPS验证:测试代理能否访问HTTPS网站
r = head(conf.httpsUrl, headers=HEADER, proxies=proxies, timeout=conf.verifyTimeout, verify=False)
八、扩展自定义代理源
- 在
ProxyFetcher类中添加新的静态方法 - 在
settings.py的PROXY_FETCHER列表中添加新方法名 - 系统会自动调用新方法采集代理
九、注意事项
- 免费代理可用率通常较低,需要大量筛选
- 使用代理时应设置合理的超时时间
- HTTPS代理需要处理证书验证问题
- 商业代理服务通常更稳定但需要付费
- 搭建自己的代理池需要维护资源
十、参考资源
- proxy_pool项目:https://github.com/jhao104/proxy_pool
- Fofa-hack工具:https://github.com/Cl0udG0d/Fofa-hack
- 快代理API文档:https://dev.kdlapi.com/testproxy