|

分享例程
界面截图: |
|
备注说明: |
- |
本帖最后由 凌哥 于 2025-8-10 07:47 编辑
基于单线程事件循环的高性能代理管理池
响应速度在微秒级、CPU占用低、内存占用低、自动检测重复数据
提供了超级多的可自定义选项,几乎都有默认值,注释丰富
除了 实现代理验证功能 以及 获取IP威胁情报 以外,没有多余的网络连接
★ 功能范围声明 ★
● 本软件为纯代理管理工具,仅提供以下基础功能:
● 通过用户自定义URL接口提取代理IP
● 通过用户配置的参数验证代理IP的网络连通性(TCP层)
● 临时管理代理IP列表
★ 数据安全机制 ★
● 所有访问数据(包括URL、响应内容、代理IP)仅保留在内存中
● 软件退出后自动清除所有数据,绝不写入硬盘或任何持久化存储
★ 技术独立性 ★
● 不依赖任何第三方网络库(如cURL/Requests)
● 使用操作系统原生Socket API实现基础通信
● 与任何其他软件无二进制依赖关系
★ 安全保护措施 ★
● 无法记录用户访问的具体URL(未设计日志功能)
● 请求参数仅在内存中临时拼接,响应解析后立即销毁
● 参数安全限制:
1.代理验证的HTTP方法仅允许 "GET"
2.请求头主动屏蔽"Cookie"、"Authorization"字段
● 接入 IPsum 威胁情报源:
1.自动联网更新,数据每24小时更新
2.在此列表中的IP地址将被强制屏蔽
3.情报源来自这些平台提供的高危IP黑名单:
360bigviktor, 360chinad, 360conficker, 360cryptolocker, 360gameover, 360locky, 360necurs, 360suppobox, 360tofsee, 360virut, abuseipdb, alienvault, atmos, badips, bitcoinnodes, blackbook, blocklist, botscout, bruteforceblocker, ciarmy, cobaltstrike, cruzit, cybercrimetracker, dataplane, dshieldip, emergingthreatsbot, emergingthreatscip, emergingthreatsdns, feodotrackerip, gpfcomics, greensnow, ipnoise,kriskinteldns, kriskintelip, malc0de, malwaredomainlistdns, malwaredomains,maxmind, minerchk, myip, openphish, palevotracker, policeman, pony,proxylists, proxyrss, proxyspy, ransomwaretrackerdns, ransomwaretrackerip, ransomwaretrackerurl, riproxies, rutgers, sblam, socksproxy, sslbl, sslproxies, talosintelligence, torproject, trickbot, turris, urlhaus, viriback, vxvault, zeustrackermonitor, zeustrackerurl, etc.
● 尽可能避免了用户滥用本软件的情况
★ 使用风险告知 ★
● 软件不验证目标网站的合法性
● 不检测响应内容安全性
● 不提供HTTPS证书校验功能
● 用户应使用合法的代理提取API接口,提供API接口的商家应强制用户实名认证
★ 禁止用途清单 ★
● 避开或突破计算机信息系统安全保护措施
● 获取未授权数据
● 发送垃圾/欺诈信息
● 侵犯隐私或知识产权
使用本软件即表示您已阅读、理解并同意本免责条款全部内容
回帖下载
L_代理智能提取 子程序文档
销毁
- 说明:完全销毁代理池的所有数据,本方法会等待内部线程完全退出才返回。
初始化
- 说明:基于单线程事件循环的高性能代理管理池;重复创建只会覆盖之前的设置参数;不会删除已记录的代理信息,也不会删除已添加的代理提取地址;可以在运行过程中重复调用。
参数 |
类型 |
可空 |
默认值 |
描述 |
代理预留数量 |
整数型 |
可空 |
0 |
默认为0=当可用代理为空的时候才去提取代理;大于0则内部会额外多提取一些代理作为备用。该数量包含的代理状态为:等待验证、验证中、验证成功。注意:这个值是最低保证值,实际预留的代理有可能会多一些(取决于你的API每次能提多少代理)。 |
立即提取代理 |
逻辑型 |
可空 |
假 |
默认为假=当首次执行 L_代理智能提取.取代理() 时内部才开始正式提取代理;真= L_代理智能提取.代理提取地址_添加() 后立刻开始提取代理的逻辑;也可以通过 L_代理智能提取.立即提取代理() 来主动触发。 |
代理轮询模式 |
逻辑型 |
可空 |
假 |
默认为假=优先使用最先提取的代理,直到这条代理被删除/拉黑;真=循环使用所有可用代理。 |
代理验证并行数量 |
整数型 |
可空 |
100 |
默认为100。注意:本参数不是设置线程数,内部只有1条线程来同时维护大量代理的并行验证功能,占用很低。 |
代理验证超时时间 |
整数型 |
可空 |
1000*5 |
单位毫秒 |
代理验证重试次数 |
整数型 |
可空 |
3 |
连续N+1次验证失败的代理将被丢弃 |
代理验证地址 |
文本型 |
可空 |
百度robots.txt |
验证代理是否可用的URL |
代理验证内容 |
文本型 |
可空 |
Baiduspider |
当网页源码中包含指定内容,则代理判定为有效 |
全局配置_不验证代理 |
逻辑型 |
可空 |
假 |
默认为假=代理地址必须为 [IP:端口] 格式,类似这种:127.0.0.1:1234;真=内部将不会对这个地址做有效性验证,直接判定为代理可用 |
全局配置_强制复用 |
逻辑型 |
可空 |
假 |
默认为假;真=重置代理的所有状态;假=不会重置代理。被复用的代理会基于【不验证代理】的设置去重新验证有效性 |
全局配置_代理时长限制_到期时间 |
长整数型 |
可空 |
0 |
默认为0=不过期;代理将在过期后自动删除;时间单位:毫秒 |
全局配置_代理时长限制_立即计时 |
逻辑型 |
可空 |
假 |
默认为假=从代理第一次被 L_代理智能提取.取代理() 返回时开始计时; 真=从API提取到代理的时候就马上开始计时 |
全局配置_代理时长限制_是否复用 |
逻辑型 |
可空 |
假 |
默认为假=代理到期后不再允许被使用; 真=如果又从 [代理提取地址] 提取到或主动调用 L_代理智能提取.添加代理() 的话就重新计算到期时间。被复用的代理会基于【不验证代理】的设置去重新验证有效性 |
全局配置_代理次数限制_阈值 |
整数型 |
可空 |
0 |
默认为0=不限制使用次数;代理将在使用次数达到阈值后被删除 |
全局配置_代理次数限制_是否复用 |
逻辑型 |
可空 |
假 |
默认为假=代理到期后不再允许被使用; 真=如果又从 [代理提取地址] 提取到或主动调用 L_代理智能提取.添加代理() 的话就重新计算使用次数。被复用的代理会基于【不验证代理】的设置去重新验证有效性 |
回调_日志 |
通用型 |
参考 可空 |
无 |
回调函数接收3个参数:消息ID[整数型 #L代理池消息* ], 消息[文本型 只读参数 禁止修改], 自定义参数[整数型];回调函数由内部线程直接调用,禁止执行长耗时代码,以免卡死整个代理池 |
日志_自定义参数 |
整数型 |
可空 |
无 |
传递给【回调_日志】这个函数的自定义参数 |
代理提取地址_添加
- 说明:返回添加后的ID标识;如果未初始化则返回0;初始化后可以随时增删改查。
- 返回值:整数型
参数 |
类型 |
可空 |
默认值 |
描述 |
请求方式 |
文本型 |
可空 |
GET |
默认为 "GET" |
提取地址 |
文本型 |
不可空 |
无 |
http:// 或 https:// 开头 |
提取超时 |
整数型 |
可空 |
3000 |
单位毫秒,设置访问提取url的超时时间,不能太长以免卡住内部代理验证的流程 |
请求头 |
文本型 |
可空 |
空 |
相当于 http类.SetRequestHeaders() |
提交数据 |
文本型 |
可空 |
空 |
如果 [代理提取请求方式] 为 "POST" 的话,本参数生效,表示为POST提交的内容 |
UTF8解码 |
逻辑型 |
可空 |
假 |
本参数控制是否将请求提取地址获取的网页源码进行UTF8解码后再读取IP和端口 |
正则表达式语句 |
文本型 |
可空 |
\d+.\d+.\d+.\d+:\d+ |
默认为匹配 [127.0.0.1:1234] 这样的IP |
最小提取间隔 |
整数型 |
可空 |
0 |
默认为0=内部智能判断,单位:毫秒;本参数控制对【提取地址】的访问频率 |
不验证代理 |
逻辑型 |
可空 |
留空 |
留空为使用全局配置;默认为假=代理地址必须为 [IP:端口] 格式,类似这种:127.0.0.1:1234;真=内部将不会对这个地址做有效性验证,直接判定为代理可用 |
强制复用 |
逻辑型 |
可空 |
留空 |
留空为使用全局配置;真=重置代理的所有状态;假=不会重置代理。被复用的代理会基于【不验证代理】的设置去重新验证有效性 |
代理时长限制_到期时间 |
长整数型 |
可空 |
留空 |
留空为使用全局配置;0=不过期;代理将在过期后自动删除;时间单位:毫秒 |
代理时长限制_立即计时 |
逻辑型 |
可空 |
留空 |
留空为使用全局配置;默认为假=从代理第一次被 L_代理智能提取.取代理() 返回时开始计时; 真=从API提取到代理的时候就马上开始计时 |
代理时长限制_是否复用 |
逻辑型 |
可空 |
留空 |
留空为使用全局配置;假=代理到期后不再允许被使用; 真=如果又从 [代理提取地址] 提取到或主动调用 L_代理智能提取.添加代理() 的话就重新计算到期时间。被复用的代理会基于【不验证代理】的设置去重新验证有效性 |
代理次数限制_阈值 |
整数型 |
可空 |
留空 |
留空为使用全局配置;0=不限制使用次数;代理将在使用次数达到阈值后被删除 |
代理次数限制_是否复用 |
逻辑型 |
可空 |
留空 |
留空为使用全局配置;假=代理到期后不再允许被使用; 真=如果又从 [代理提取地址] 提取到或主动调用 L_代理智能提取.添加代理() 的话就重新计算使用次数。被复用的代理会基于【不验证代理】的设置去重新验证有效性 |
自定义代理提取回调 |
通用型 |
参考 可空 |
无 |
回调函数接收3个整数参数:网页源码指针, 指针长度, 自定义参数;如果提取地址的返回值内容比较特殊,或者是s5代理以及自定义内容,则你可以自己挂接一个回调来处理网页源码,然后自己取出代理地址来调用 L_代理智能提取.添加代理();注意:调用回调的线程就是内部代理提取验证的线程,所以不能堵塞它 |
回调自定义参数 |
整数型 |
可空 |
无 |
传递给【自定义代理提取回调】这个函数的自定义参数 |
代理提取地址_删除
参数 |
类型 |
可空 |
默认值 |
描述 |
ID |
整数型 |
不可空 |
无 |
添加代理提取地址() 的返回值 |
代理提取地址_取列表
参数 |
类型 |
可空 |
默认值 |
描述 |
返回列表 |
L_代理提取地址 |
参考 可空 数组 |
无 |
返回 L_数据类型_代理提取地址[数组] |
代理提取地址_清空
添加代理
- 说明:主动调用来添加一条代理到池里;添加后的代理会在内部自动验证有效性;这个函数也是在内部提取到代理后会调用的。
- 返回值:逻辑型
参数 |
类型 |
可空 |
默认值 |
描述 |
代理地址 |
文本型 |
不可空 |
无 |
标准IP:端口的格式,或者自定义内容 |
不验证代理 |
逻辑型 |
可空 |
留空 |
留空为使用全局配置;默认为假=代理地址必须为 [IP:端口] 格式,类似这种:127.0.0.1:1234;真=内部将不会对这个地址做有效性验证,直接判定为代理可用 |
强制复用 |
逻辑型 |
可空 |
留空 |
留空为使用全局配置;真=立刻重置当前代理的所有状态,就像刚添加一样;假=不会重置;如果代理还在可用池里面则不会改变它的顺序。被复用的代理会基于【不验证代理】的设置去重新验证有效性 |
代理时长限制_到期时间 |
长整数型 |
可空 |
留空 |
留空为使用全局配置;0=不过期;代理将在过期后自动删除;时间单位:毫秒 |
代理时长限制_立即计时 |
逻辑型 |
可空 |
留空 |
留空为使用全局配置;默认为假=从代理第一次被 L_代理智能提取.取代理() 返回时开始计时; 真=从API提取到代理的时候就马上开始计时 |
代理时长限制_是否复用 |
逻辑型 |
可空 |
留空 |
留空为使用全局配置;假=代理到期后不再允许被使用; 真=如果又从 [代理提取地址] 提取到或主动调用 L_代理智能提取.添加代理() 的话就重新计算到期时间。被复用的代理会基于【不验证代理】的设置去重新验证有效性 |
代理次数限制_阈值 |
整数型 |
可空 |
留空 |
留空为使用全局配置;0=不限制使用次数;代理将在使用次数达到阈值后被删除 |
代理次数限制_是否复用 |
逻辑型 |
可空 |
留空 |
留空为使用全局配置;假=代理到期后不再允许被使用; 真=如果又从 [代理提取地址] 提取到或主动调用 L_代理智能提取.添加代理() 的话就重新计算使用次数。被复用的代理会基于【不验证代理】的设置去重新验证有效性 |
拉黑代理
- 说明:黑名单的逻辑优先级是最高的,被拉黑后的代理绝对不可能被提取和使用;将指定代理强制拉入黑名单一段时间,[黑名单时间] 与 [代理时长限制_到期时间] 独立计算。如果代理地址不在池里则返回假
- 返回值:逻辑型
参数 |
类型 |
可空 |
默认值 |
描述 |
代理地址 |
文本型 |
不可空 |
无 |
要拉黑的代理地址 |
拉黑时间 |
长整数型 |
可空 |
-1 |
默认为-1=永久拉黑, 0=解除黑名单, 大于0=拉黑指定毫秒,到期后恢复可用 |
取代理
- 说明:返回一条可用代理,失败返回假
- 返回值:逻辑型
参数 |
类型 |
可空 |
默认值 |
描述 |
返回_代理 |
文本型 |
参考 可空 |
无 |
返回变量 |
超时时间 |
整数型 |
可空 |
-1 |
单位毫秒;默认为-1=无限等待,0=不等待,大于0则一定时间后没有可用代理就返回 |
代理设置为失效状态
- 说明:主动将一个代理设置为失效状态(到期或超过次数阈值),失效后的代理只有被复用后才可以再次提取出来;如果代理地址不在池里则返回假
- 返回值:逻辑型
参数 |
类型 |
可空 |
默认值 |
描述 |
代理地址 |
文本型 |
不可空 |
无 |
要设为失效的代理地址 |
让时间到期 |
逻辑型 |
可空 |
无 |
控制使用哪个方式让这条代理失效 |
让次数到达阈值 |
逻辑型 |
可空 |
无 |
控制使用哪个方式让这条代理失效 |
取统计数据
- 说明:返回值并不是当前的【实时】状态,在内部对应的事件触发后才会更新,仅供参考,这么做是为了提升速度
- 返回值:逻辑型
参数 |
类型 |
可空 |
默认值 |
描述 |
返回_可用代理数 |
整数型 |
参考 可空 |
无 |
能立刻取出使用的代理 |
返回_等待验证的代理数 |
整数型 |
参考 可空 |
无 |
等待验证的代理 |
返回_验证中代理数 |
整数型 |
参考 可空 |
无 |
正在验证的代理 |
返回_黑名单代理数 |
整数型 |
参考 可空 |
无 |
主动标记为黑名单的代理 |
返回_累计提取代理数 |
整数型 |
参考 可空 |
无 |
不包含重复的值 |
立即提取代理
|
评分
-
查看全部评分
|