经验分享 | 基于代理IP的挖掘与分析
字数 1130 2025-08-18 11:36:57
基于代理IP的挖掘与分析教学文档
1. 代理IP概述
代理IP是指介于客户端和目标服务器之间的中间服务器,用于转发客户端请求并隐藏真实IP地址。代理IP在网络安全、数据爬取、隐私保护等领域有广泛应用。
2. 代理IP挖掘与分析流程
2.1 整体思路
- 获取代理地址
- 验证代理地址可用性
- 提取代理指纹信息
- 自动化挖掘代理
- 数据分析与利用
2.2 代理IP的主要用途
- 网络爬虫
- 隐藏真实IP
- 访问受限内容
- 薅羊毛活动
- 安全研究
3. 代理IP获取方法
3.1 公开代理IP平台
- www.xicidaili.com(国内高匿/普通/HTTPS/HTTP代理)
- cn-proxy.com(需要梯子)
3.2 爬取代理IP示例代码
#coding:utf-8
from requests import *
import re
headers = {
"accept":"text/html,application/xhtml+xml,application/xml;",
"accept-encoding":"gzip",
"accept-language":"zh-cn,zh;q=0.8",
"referer":"Mozilla/5.0(compatible;Baiduspider/2.0;+http://www.baidu.com/search/spider.html)",
"connection":"keep-alive",
"user-agent":"mozilla/5.0(windows NT 6.1;wow64) applewebkit/537.36 (khtml,like gecko)chrome/42.0.2311.90 safari/537.36"
}
for i in range(1,835):
url = 'http://www.xicidaili.com/wn/' + str(i)
html = get(url,timeout=3,headers=headers)
html.encoding = html.apparent_encoding
proxyip = r'(<td>.*</td>)'
iplist = re.findall(proxyip,html.text)
i = 1
for ip in iplist:
ip = (ip.split('<td>')[1]).split('</td>')[0]
f = open('./ip.txt','a')
print(ip,file=f)
if i%5==0:
print('\n',file=f)
i = i + 1
4. 代理IP验证
4.1 验证方法
通过代理访问baidu.com,返回状态为200则说明代理可用
4.2 验证代码示例
#coding:utf-8
from requests import *
import re
for proxy in open("https.txt"):
proxy = proxy.replace('\n','')
proxies={"https":proxy}
headers = {
"Host": "www.baidu.com",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0",
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate",
"Referer": "https://www.baidu.com/"
}
url = 'https://www.baidu.com'
try:
html = get(url,timeout=10,headers=headers,proxies=proxies)
if html.status_code == 200:
proxy = proxy.split('https://')[1]
f = open('./proxyip.txt','a')
print(proxy,file=f)
except Exception as e:
print(e)
pass
5. 代理指纹提取
5.1 指纹提取方法
- 使用Nmap扫描识别服务类型
- 分析HTTP响应头部信息(特别是Server字段)
5.2 常见代理指纹
- MikroTik http proxy
- Squid
- App-webs
- Tengine
- Proxy
- Microsoft-IIS
- PCSERVER
- Apache
5.3 指纹提取代码
#coding:utf-8
from requests import *
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0",
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate",
}
for url in open("proxytest.txt"):
url = url.split('\n')[0]
try:
html = get(url,timeout=3,headers=headers)
html = html.headers['server']
except Exception as e:
pass
f = open('./proxyanalysis.txt','a')
print(url,html,file=f)
6. 代理指纹实战应用
6.1 使用搜索引擎查找代理
- Fofa搜索语法:
server:"MikrotikHttpProxy" - Shodan、Zoomeye等也可用于搜索
6.2 常见代理端口分布
对29700个HTTPS代理端口的分析显示,以下端口出现频率较高(>100次):
- 8080
- 3128
- 80
- 8888
- 8081
- 8000
- 1080
- 9000
- 443
- 8082
7. 数据分析与安全应用
7.1 长期存活的代理IP分析
SELECT * FROM httpsproxy
WHERE LiveDays LIKE '%天' AND LiveDays > 100
ORDER BY LiveDays DESC;
7.2 安全分析
- 识别政企单位泄露的代理
- 使用云悉平台查询IP关联域名:
http://yunsee_info.vuln.cn/?type=webip&url=1.2.3.4
7.3 批量查询代码
#coding:utf-8
from requests import *
import re
for ip in open('livedays.txt'):
url = 'http://yunsee_info.vuln.cn/?type=webip&url=' + ip
html = get(url)
html = html.text
if '404' not in html:
f = open('./ipipip.txt','a')
print(ip,html,file=f)
8. IP情报应用
代理IP可作为IP信誉情报的一部分:
- 识别恶意IP
- 防范薅羊毛行为
- 增强安全防护
9. 总结与建议
9.1 安全观
- 专注于细分领域深度研究
- 采用简单有效的解决方案
- 网络层防护优先于应用层防护
9.2 最佳实践
- 定期爬取公开代理IP
- 建立代理IP指纹库
- 分析长期存活的代理IP
- 将代理IP纳入威胁情报系统
- 关注政企单位泄露的代理配置
9.3 扩展方向
- 代理IP区域分布分析
- 代理服务器业务组件指纹
- 路由器等设备代理特征
- 自动化代理IP挖掘系统开发
通过系统化的代理IP挖掘与分析,可以有效提升网络安全防护能力,并为威胁情报提供重要数据支持。