易语言实现多线程验证代理是否有效的代码

论坛 期权论坛 脚本     
niminba   2021-5-23 04:41   2051   0

载入程序

.版本 2
.程序集 启动
.子程序 _启动子程序, 整数型
载入 (_主窗口, , 假)
返回 (0)

多线程的方式验证ip的代码

此功能需要加载鱼刺类_线程操作模块和鱼刺类_HTTP模块

.版本 2
.支持库 iext
.程序集 主窗口程序集
.程序集变量 线程池, 鱼刺类_线程池Ex, , , 框架
.程序集变量 临界, 鱼刺类_临界许可
.程序集变量 线程, 鱼刺类_线程操作
.程序集变量 验证网址, 文本型, , , 配置
.程序集变量 验证字符串, 文本型
.程序集变量 是否UTF解码, 逻辑型
.程序集变量 连接超时, 整数型
.程序集变量 验证超时, 整数型
.程序集变量 已完成数量, 整数型, , , 记录
.程序集变量 有效数量, 整数型
.程序集变量 失效数量, 整数型
.程序集变量 保证显示索引, 整数型
.子程序 _按钮_测试_被单击
.局部变量 测试, 鱼刺类_线程操作, 静态
.局部变量 bool, 逻辑型
按钮_测试.禁止 = 真
验证网址 = 编辑框_验证网址.内容
验证字符串 = 编辑框_验证字符串.内容
是否UTF解码 = 选择框_UTF解码.选中
.如果真 (验证网址 = “” 或 验证字符串 = “”)
  信息框 (“网址或字符串填写错误!”, 48 + 65536, )
  按钮_测试.禁止 = 假
  返回 ()
.如果真结束
bool = 测试.创建 (&测试验证网址)
.如果真 (bool = 真)
  测试.等待2 ()
  .判断开始 (测试.取返回值 () = 1) ' 利用线程返回状态判断测试是否成功
    信息框 (“测试成功!验证网址和关键字可用”, 64 + 65536, )
  .默认
    信息框 (“测试失败!验证网址和关键字符串不可用”, 48 + 65536, )
  .判断结束
.如果真结束
按钮_测试.禁止 = 假
.子程序 测试验证网址, 整数型
.局部变量 http, WinHttp
.局部变量 str, 文本型
http.Open (“GET”, 验证网址)
http.Set_User_Agent ()
http.Send ()
.判断开始 (是否UTF解码 = 真)
  str = http.GetResponseTextUtf8 ()
.默认
  str = http.GetResponseText ()
.判断结束
.如果真 (寻找文本 (str, 验证字符串, , 假) ≠ -1)
  返回 (1) ' 返回状态用于判断是否成功
.如果真结束
返回 (0)
.子程序 _按钮_导入_被单击
.局部变量 int, 整数型
.局部变量 str, 文本型
.局部变量 strs, 文本型, , "0"
.局部变量 ip, 文本型
.局部变量 端口, 文本型
.局部变量 o, 整数型
通用对话框_浏览.类型 = 0
通用对话框_浏览.过滤器 = “文本文档(*.txt)|*.txt”
.如果真 (通用对话框_浏览.打开 () = 假)
  返回 ()
.如果真结束
按钮_导入.禁止 = 真
int = 打开文件 (通用对话框_浏览.文件名, 1, )
.如果真 (int = 0)
  按钮_导入.禁止 = 假
  返回 ()
.如果真结束
.判断循环首 (是否在文件尾 (int, ) = 假)
  str = 读入一行 (int)
  str = 删首尾空 (str)
  strs = 分割文本 (str, “:”, 2)
  .如果真 (取数组成员数 (strs) = 2)
    ip = strs [1]
    端口 = strs [2]
    .如果真 (ip ≠ “” 且 端口 ≠ “”)
      o = 列表_代理.插入表项 (, , , 0, , )
      列表_代理.置标题 (o, 0, 到文本 (o + 1))
      列表_代理.置标题 (o, 1, ip)
      列表_代理.置标题 (o, 2, 端口)
      列表_代理.置标题 (o, 3, “**”)
      列表_代理.置标题 (o, 4, “-”)
      _处理事件 ()
    .如果真结束
  .如果真结束
.判断循环尾 ()
关闭文件 (int)
状态条_状态.置文本 (0, “代理总数:” + 到文本 (列表_代理.取表项数 ()))
按钮_导入.禁止 = 假
.子程序 _按钮_导出_被单击
.局部变量 bool, 逻辑型
.局部变量 i, 整数型
.局部变量 int, 整数型
.局部变量 ip, 文本型
.局部变量 端口, 文本型
.局部变量 time, 文本型
.局部变量 stop, 文本型
.局部变量 text, 文本型
.局部变量 len, 整数型
.如果真 (列表_代理.取表项数 () < 1)
  信息框 (“没代理可导出”, 48 + 65536, , )
  返回 ()
.如果真结束
bool = 信息框 (“是否只导出有效代理”, #是否钮 + 48 + 65536, ) = #是钮
通用对话框_浏览.类型 = 1
通用对话框_浏览.过滤器 = “文本文档(*.txt)|*.txt”
.如果真 (通用对话框_浏览.打开 () = 假)
  返回 ()
.如果真结束
按钮_导出.禁止 = 真
int = 打开文件 (通用对话框_浏览.文件名, 4, )
移到文件尾 (int)
.变量循环首 (0, 列表_代理.取表项数 () - 1, 1, i)
  _处理事件 ()
  stop = 列表_代理.取标题 (i, 4)
  .如果真 (bool = 真 且 stop ≠ “验证成功”)
    到循环尾 ()
  .如果真结束
  ip = 列表_代理.取标题 (i, 1)
  端口 = 列表_代理.取标题 (i, 2)
  time = 列表_代理.取标题 (i, 3)
  text = ip + “:” + 端口 + “----” + time
  .如果真 (bool = 假)
    text = text + “-.果真结束
time = 取启动时间 ()
http.SetProxy (2, ip地址 + “:” + 端口)
http.SetTimeouts (连接超时, 连接超时, 验证超时, 验证超时)
http.Open (“GET”, 验证网址, 真)
http.Set_User_Agent ()
http.Send ()
timing = 验证超时 \ 1000 + 选择 (验证超时 % 1000 > 0, 1, 0)
.计次循环首 (timing, ) ' 这样写是为了能快速相应停止
  bool = http.WaitForResponse (1) ' 单位 秒
  .如果真 (bool = 真)
    跳出循环 ()
  .如果真结束
  .如果真 (线程池.取_状态 () ≠ #线程池_正在工作) ' 当用户手动停止时 线程池状态就变了 这样就能触发返回了
    http.Abort () ' 终止连接
    原子_递增 (已完成数量)
    返回 ()
  .如果真结束
.计次循环尾 ()
time = 取启动时间 () - time ' 算出超时
.判断开始 (bool = 真)
  .判断开始 (是否UTF解码 = 真)
    str = http.GetResponseTextUtf8 ()
  .默认
    str = http.GetResponseText ()
  .判断结束
.默认
  http.Abort ()
.判断结束
.判断开始 (str = “”)
  原子_递增 (失效数量)
  设置表象 (i, “*/*”, 选择 (time > 连接超时, “验证失败”, “连接超时”), 2)
.判断 (寻找文本 (str, 验证字符串, , 假) ≠ -1)
  原子_递增 (有效数量)
  设置表象 (i, 到文本 (time), “验证成功”, 选择 (time < 10000, 1, 3))
.默认
  原子_递增 (失效数量)
  设置表象 (i, “*/*”, “验证失败”, 2)
.判断结束
原子_递增 (已完成数量)
.子程序 设置表象
.参数 index, 整数型
.参数 time, 文本型
.参数 stop, 文本型
.参数 State, 整数型
临界.进入 ()
列表_代理.置标题 (index, 3, time)
列表_代理.置标题 (index, 4, stop)
列表_代理.置状态图片 (index, State)
.如果真 (index > 保证显示索引)
  列表_代理.保证显示 (index + 1)
  保证显示索引 = index + 1
.如果真结束
临界.退出 ()
.子程序 更新状态条
临界.进入 ()
状态条_状态.置文本 (1, “已完成验证:” + 到文本 (已完成数量))
状态条_状态.置文本 (2, “有效代理数:” + 到文本 (有效数量))
状态条_状态.置文本 (3, “失效代理数:” + 到文本 (失效数量))
临界.退出 ()
.子程序 __主窗口_将被销毁
线程池.销毁 ()
' 防止用户意外点击红叉叉

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对社区的支持。如果你想了解更多相关内容请查看下面相关链接

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP