跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 批量验证代理 IP 是否可用, 有什么特别快的骚操作吗?
未分類
28 3 月 2020

批量验证代理 IP 是否可用, 有什么特别快的骚操作吗?

批量验证代理 IP 是否可用, 有什么特别快的骚操作吗?

資深大佬 : ClericPy 10

问题就是: 有什么特别省流量, 速度特别快, 结果也比较正确的校验一堆免费代理是否健康的通用方式? 这个问题两年前问过, 现在想再看看有没有新的思路

  1. 刚学编程那会, 直接给 requests 无脑挂上代理去请求的

  2. 后来发现可以先用内置的 socket 库去连一连那个代理, timeout 设置的很小就可以先筛一轮无效 IP

  3. 后来觉得为了省流量, 改成 streaming Response 获取 1 ~ 5 KB 就断开

  4. 后来觉得 head 请求或者 options 请求也应该能试试连接是否通畅

  5. 后来觉得应该有一个连接成功率的东西存在, 所以每次发 5 个请求, 计算成功请求的占比

  6. 再后来觉得只发 head 请求不能证明 get 请求是 OK 的… 所以又改为了流式请求比较前 1 KB 的数据, 顺便记录上请求时间

  7. 再后来看了下一些 star 挺多的代理池代码, 貌似大部分人就是普通的对 baidu 发了个 get 请求, 然后也不验证返回的数据, 甚至也没使用 streaming, 就是判断下 status_code 是不是 200

  8. 现在想看看有没有什么特别一点的思路, 比如先对 IP 握个手 SYN?

大佬有話說 (7)

  • 資深大佬 : gaojin

    提供个思路。。。可以看看 squid 、nginx 这些是如何验证某个 ip 的质量的

  • 主 資深大佬 : ClericPy

    @gaojin #1 感谢, 之前看的都是一些挺一般的代码…

  • 資深大佬 : feelinglucky

    https://github.com/mingcheng/proxypool 看看我写的?

    其实很简单,开个定时器去轮询检查就可以了。不过不知道你想要用什么技术栈实现,例如 golang 就有原生的代理库支持,所以不用想那么多。

  • 主 資深大佬 : ClericPy

    @feelinglucky #3 不是轮询什么的问题, 就只谈验证一个 IP 的健康度, 有什么除了挂上代理真正请求一次以外的其他思路, 可以节省流量而且足够快, 结果又是准确的. golang 的正好最近在学, 我看一下试试

  • 資深大佬 : feelinglucky

    @ClericPy https://github.com/mingcheng/proxypool/blob/master/model/proxy.go#L66

    节省流量角度考虑的话,先看下端口是不是开放,然后测试 HTTP 拿头和 Response Code 是不是 200 就 OK
    了。

    其实,个人觉得这个场景下可用的代理也是有时效性的,所以即便检查了使用的时候也有可能跪了,因此拿到 IP 列表的时候进行弱检查就可以了,使用的时候设置重试切换次数。

  • 資深大佬 : oott123

    别的不知道,但你要响应足够小,可以试试:

    g.cn/generate_204
    www.google.com/generate_204
    www.qualcomm.cn/generate_204

    都是支持 http / https 的,而且都很能扛并发

  • 主 資深大佬 : ClericPy

    @oott123 #6 哈哈, 太好了, 连蔷外也可以
    @feelinglucky #5 嗯, 一开始说的用内置 socket 就是验证端口能否连接

    非常感谢二位, 要的就是这些思路

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具