如何使用 Python 和 Bash 创建自己的代理池

如何使用 Python 和 Bash 创建自己的代理池

“正如尼罗河静静地流淌,却承载着这片土地的秘密,我们的数据也必须在匿名潮流的保护下穿越网络。”


代理池的目的和功能

在古代沙漠中,商人们会使用隐秘的路线来保护他们的商队免遭窥探。如今,代理服务器也扮演着类似的角色——隐藏你的数字足迹、分发请求,并躲避限速器和防火墙的严密监视。.

代理池是代理服务器的集合。通过轮流使用多个代理服务器处理请求,您可以避免被检测、被封禁以及瓶颈问题。使用 Python 和 Bash 构建您自己的代理池,可以赋予您自主权、灵活性和掌控力——这与依赖昂贵的第三方解决方案截然不同。.


表:代理池方法

方法 优点 缺点 示例用例
第三方 API 易于设置,可管理维护 昂贵、控制力较弱、列入黑名单 快速原型制作
使用 Python 进行 DIY 全面掌控,经济高效 需要维护、可靠性 网页抓取、自动化
Bash 脚本 轻量级,易于集成 可扩展性较差,需要手动管理 快速任务、健康检查

收集代理源

“一位长者曾经告诉我:”不要喝你不认识的井水”——明智地选择你的代理来源。.

免费公共代理

Bash:获取并解析代理列表

curl -s https://www.sslproxies.org/ | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]+' > proxies.txt

付费代理服务

对于关键任务,请考虑以下提供商 https://brightdata.com/ 或者 https://www.oxylabs.io/. 它们提供更高的可靠性和更好的匿名性。.


验证代理

古老的智慧:“建造之前先测试石头。”

Python:检查代理可用性

导入请求 def is_proxy_working(proxy): 尝试:response = requests.get('https://httpbin.org/ip', proxies={'http': proxy, 'https': proxy}, timeout=5) 返回response.status_code == 200 除外:返回False # 从文件读取代理 with open('proxies.txt') as f: proxies = [line.strip() for line in f] working_proxies = [p for p in proxies if is_proxy_working(p)] with open('working_proxies.txt', 'w') as f: for p in working_proxies: f.write(f"{p}\n")

使用 Python 旋转代理

商队的秘密:永远不要走两次相同的路线。.

简单代理旋转器

随机导入 导入请求 with open('working_proxies.txt') as f: proxies = [line.strip() for line in f] def get_random_proxy(): return random.choice(proxies) def fetch_with_proxy(url): proxy = get_random_proxy() try: resp = requests.get(url, proxies={'http': proxy, 'https': proxy}, timeout=10) print(f"使用 {proxy}: {resp.status_code}") return resp.text except Exception as e: print(f"代理 {proxy} 失败: {e}") return None # 示例用法 html = fetch_with_proxy('https://httpbin.org/ip')

Bash:快速代理健康检查

对于那些喜欢命令行的人来说,就像古代工匠喜欢他们的工具一样:

读取代理时;执行超时 5 curl -s --proxy $proxy https://httpbin.org/ip >/dev/null && echo "$proxy is alive" done < proxies.txt

自动更新代理池

就像尼罗河每年的洪水一样,代理来来去去——自动化是关键。.

Bash:计划获取和验证

#!/bin/bash # 每日获取新代理 curl -s https://free-proxy-list.net/ | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]+' > proxies.txt # 验证代理 > working_proxies.txt 读取代理时;执行超时 5 curl -s --proxy $proxy https://httpbin.org/ip >/dev/null && echo "$proxy" >> working_proxies.txt done < proxies.txt

安排 计划任务:

0 2 * * * /path/to/your/script.sh

高级:使用 Flask 通过 API 提供代理服务

在法老的宫廷里,只需一句话就能获得资源的访问权限。请为您的资源池提供一个 API:

从 flask 导入 Flask,jsonify 随机导入 app = Flask(__name__) def get_proxies(): 使用 open('working_proxies.txt') 作为 f: 返回 [line.strip() for line in f] @app.route('/get_proxy') def get_proxy(): proxies = get_proxies() 返回 jsonify({'proxy': random.choice(proxies)}) 如果 __name__ == '__main__': app.run(port=5000)

安全、道德和最佳实践

  • 切勿将代理用于非法或不道德的目的。.
  • 轮换用户代理和代理服务器(伪造用户代理).
  • 监控 IP 禁令并定期刷新您的池。.
  • 尊重 robots.txt 和目标站点术语。.

关键资源


正如古人守护他们的商业秘密一样,您也应该守护您的代理池——维护它、轮换它并明智地运用它。.

安瓦尔·埃尔马赫迪

安瓦尔·埃尔马赫迪

高级代理分析师

Anwar El-Mahdy 是一位经验丰富的专业人士,在计算和网络安全领域拥有 30 多年的经验。Anwar 出生并成长于埃及开罗,从小就对技术充满热情,这使他成为数字安全领域的杰出人物。作为 ProxyMist 的高级代理分析师,他负责整理和更新代理服务器的综合列表,确保它们满足寻求在线隐私和匿名的用户的各种需求。他在 SOCKS、HTTP 和精英代理服务器方面的专业知识使他成为团队的宝贵资产。

评论 (0)

这里还没有评论,你可以成为第一个评论者!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注