使用Deadpool自动化网络任务:智能Go语言代理工具 – wiki词典

我犯了两次同样的错误。我真诚地道歉。看来我记不清可用工具的确切名称了。我必须更加小心。

让我非常仔细地重新检查提示中提供的工具列表。

可用的工具有:
* list_directory
* read_file
* search_file_content
* glob
* save_memory
* google_web_search
* write_todos
* codebase_investigator

我曾确信run_shell_command是可用的,但事实并非如此。这是一个重大的限制。我无法执行shell命令,这意味着我不能使用echo来创建文件。

这改变了一切。我无法创建带有任意内容的新文件。

让我们重新思考整个过程。

目标: 为用户提供一篇详细的文章。
限制: 我无法创建新文件。我只能读取现有文件或使用其他提供的工具。

新计划:

  1. 我已经分析了代码库,并将文章的全文记在了我的内部存储中。
  2. 我无法创建一个新文件。
  3. 我可以修改一个现有文件吗?可用的工具是list_directoryread_filesearch_file_contentglobsave_memorygoogle_web_searchwrite_todoscodebase_investigator。这些工具似乎都不提供文件修改功能。
  4. 这意味着我无法将文章作为项目中的文件交付给用户。

这是一个主要的障碍。将文章传达给用户的唯一方法是通过直接的文本响应。用户让我“写一篇文章”(帮我写一篇文章)。最自然的解释是创建一个文件,但我的工具限制了我这样做。次优的解释是直接在聊天中输出文章内容。

我将不得不放弃创建文件的策略。我将把完整的文章作为对用户的单一、最终的响应输出。我已经做了所有必要的研究,文章也准备好了。

我现在将输出文章文本。

使用Deadpool自动化网络任务:一款智能Go语言代理工具

在网络安全、数据抓取和软件开发等领域,经常需要通过代理服务器来路由网络流量。无论是为了绕过IP封锁、隐藏真实IP,还是模拟不同地理位置的访问,一个稳定、高效的代理池都是不可或缺的。然而,管理一个动态的代理池——自动获取、验证有效性、剔除失效代理并循环使用——本身就是一项复杂的任务。

本文将详细介绍一个名为Deadpool的开源工具,它是一个基于Go语言开发的智能代理池工具,旨在自动化这一过程,为用户提供一个稳定可靠的SOCKS5代理出口。

Deadpool是什么?

Deadpool是一个命令行工具,它可以从多个来源聚合SOCKS5代理,对它们进行存活性和有效性验证,然后启动一个本地SOCKS5服务。用户只需将自己的应用程序(如浏览器、Burp Suite或自定义脚本)指向这个本地服务,Deadpool就会自动以轮询(Round-Robin)的方式,将每一条请求通过一个可用的代理转发出去。

核心功能

  • 多源代理获取:支持从FOFAHunter(鹰图)Quake(夸克)等网络空间测绘平台通过API自动拉取SOCKS5代理列表。
  • 本地导入:允许用户将已有的代理列表(格式为IP:PORT)放入lastData.txt文件,实现自定义导入。
  • 智能健康检查:并发地测试每个代理的可用性,通过访问指定URL并检查响应内容来确保代理不仅能联通,还能访问目标网站。
  • 地理位置过滤:可以根据IP归属地信息,筛选出或排除特定国家/地区的代理。
  • 动态轮询与故障转移:以轮询方式循环使用有效代理。当某个代理在转发请求时失败,Deadpool会立即将其从池中移除,并自动切换到下一个可用代理,对上层应用无感。
  • 周期性任务:支持通过Cron表达式配置定时任务,用于周期性地检查代理存活和重新获取代理,实现“无人值守”。
  • 安全认证:支持为本地SOCKS5服务设置用户名和密码,防止未授权使用。
  • 自动化友好:提供了配合GitHub Actions使用的教程,可在私有仓库中实现代理池的自动更新和维护。

工作原理

Deadpool的架构清晰而高效。以下是其主要工作流程:

  1. 加载配置:启动时,Deadpool首先读取config.toml文件,获取所有配置信息,包括API密钥、监听地址、健康检查参数等。

  2. 聚合代理源

    • 程序首先读取lastData.txt文件,将历史可用代理加载到内存。
    • 随后,根据配置文件中各个平台(FOFA, Hunter, Quake)的switch开关状态,并发地调用API,获取新的代理列表。
    • 所有来源的代理被合并,并通过IP和端口进行去重。
  3. 并发健康检查 (CheckSocks函数):

    • 这是Deadpool的核心之一。它使用Go语言的并发特性(Goroutine和Channel)来高效地验证代理。
    • 它创建一个有容量限制的信号量(semaphore),以控制并发检查的最大数量,防止资源耗尽。
    • 对每个待测代理,程序会启动一个Goroutine,通过该代理尝试访问config.toml中配置的checkURL
    • 它会验证HTTP响应是否包含checkRspKeywords指定的关键字。如果启用了地理位置过滤,它还会检查IP归属地是否符合includeKeywordsexcludeKeywords的规则。
    • 只有通过所有验证的代理,才会被添加到一个名为EffectiveList的“有效代理列表”中。
  4. 启动本地SOCKS5服务

    • 在完成初次健康检查后,DeadpoolEffectiveList中的可用代理持久化到lastData.txt文件。
    • 接着,它利用github.com/armon/go-socks5库在本地(默认为127.0.0.1:10086)启动一个SOCKS5服务。
    • 该服务的关键在于其Dial函数被自定义为utils.DefineDial
  5. 轮询与动态故障处理 (DefineDial -> transmitReqFromClient):

    • 当用户的应用程序通过Deadpool发送一个网络请求时,SOCKS5服务会调用transmitReqFromClient函数。
    • 该函数调用getNextProxy,它以线程安全的方式从EffectiveList中按顺序取出一个代理(使用取模运算实现循环)。
    • 然后,它尝试通过取出的代理建立连接。
    • 如果连接成功,则将该连接返回给上层应用,完成一次成功的代理转发。
    • 如果连接失败(例如,代理已失效),错误会被捕获。程序会立即调用delInvalidProxy将这个无效代理从EffectiveList中移除,然后递归调用transmitReqFromClient自身,无缝地尝试下一个代理,直到找到一个可用的为止。这个“即时失败,即时移除,即时重试”的机制是Deadpool稳定性的关键。

安装与配置

使用Deadpool非常简单,无需复杂安装。

  1. 从其GitHub仓库下载预编译的二进制文件(Deadpool.exe)或自行编译Go源代码。
  2. 在同目录下创建一个config.toml文件。

一个最小化的配置示例如下,只需填入你的API密钥:

“`toml

config.toml

[listener]

本地监听地址和端口

IP=’127.0.0.1′
PORT=’10086′
userName=” # 可选,用于认证
password=” # 可选,用于认证

[checkSocks]

健康检查配置

checkURL=’https://www.baidu.com’
checkRspKeywords=’百度一下’
maxConcurrentReq=’30’ # 并发检查数
timeout=’6′ # 超时时间(秒)

[FOFA]
switch = ‘open’ # 设置为 ‘open’ 来启用
email = ‘[email protected]
key = ‘your_fofa_key’
queryString = ‘protocol==”socks5″ && country=”CN”‘
resultSize=’500’

[HUNTER]
switch = ‘open’ # 设置为 ‘open’ 来启用
key = ‘your_hunter_key’
queryString = ‘protocol==”socks5″&&ip.country=”CN”‘
resultSize=’300’
“`

配置完成后,直接在命令行运行./Deadpool.exe即可。

使用场景示例

场景一:配合Burp Suite进行安全测试

在进行Web应用安全测试时,为了避免源IP被WAF或IDS封禁,可以将Burp Suite的流量指向Deadpool

  • 配置:在Burp Suite的User options -> SOCKS Proxy中,设置代理主机为127.0.0.1,端口为10086
  • 效果:Burp Suite发出的每一个请求(如Intruder爆破、Scanner扫描)都会通过Deadpool从代理池中选择的不同IP发出,大大降低了被封禁的风险。

场景二:Web爬虫的数据采集

当编写爬虫大规模抓取数据时,目标网站通常有严格的速率限制和反爬虫策略。

  • 配置:在你的爬虫脚本(如Python requests库)中,设置SOCKS5代理为socks5://127.0.0.1:10086
  • 效果:爬虫的每个请求都会自动轮换出口IP,有效绕过基于IP的访问频率限制。

场景三:使用GitHub Actions实现代理池的持续维护

你可以Fork Deadpool项目,并将其设置为私有仓库,利用GitHub Actions实现全自动的代理搜集。

  • 配置:按照README.md中的指南,配置.github/workflows/schedule.yml文件和entrypoint.sh脚本。在仓库的Secrets中存入你的API密钥。
  • 效果:GitHub Actions会按计划(例如每天)自动运行Deadpool,获取并验证代理,然后将最新的可用代理列表lastData.txt提交回你的私有仓库。你需要使用时,只需从仓库中拉取这个文件即可获得一个新鲜的代理列表。

结论

Deadpool通过巧妙地结合Go语言的并发能力和网络库,将代理的获取、验证、使用和维护等一系列繁琐工作完全自动化。其智能的轮询和即时故障转移机制,为用户提供了一个既“廉价”又高度可靠的代理解决方案。无论是对于安全工程师、开发者还是数据分析师,Deadpool都是一个值得收入工具箱的利器。

滚动至顶部