目录
测试环境和部分介绍
环境
机器位置:Digital Ocean (Santa Clara , United States)
系统: Windows
软件:puppeteer + chrome 109
ip池:geo(US)
代理协议:http
测试页面:同 https://bjun.tech/demo/proxy_guess/index.php
流程
puppeteer 操作 chrome 使用代理访问测试页面,在6秒后或者ws_with_message成功返回结果视为结束。只有成功加载结果的记录会被记录到日志。
测试页面介绍
访问页面后会1秒后发起3个请求,分别是 302_img,ws_with_message和ws_without_message,请求结束后1秒拉取结果。具体代码可以查看页面源码。
302_img
请求一个图片,图片会经过302跳转后加载。具体可以看通过一个302图片识别代理(SOCKS5/HTTP/HTTPS)。
其中会产生2个猜测数据,
- guess use proxy by_302_img
- guess use proxy by 302_rrt
ws_without_message
完成一次websocket(http/1.1)握手后立即断开。
主要作用是与302_img 做对比,其中会产生1个猜测数据:
- guess use proxy ws_without_message
ws_with_message
完成一次websocket(http/1.1)握手后和断开,再断开前与服务器无间隔往返发送3次消息,并计算延迟。
其中会产生2个猜测数据:
- guess use proxy ws_with_message
- guess use proxy by ws_rrt
部分设计说明
- 机器在美国和代理地区选择在美国,主要为了尽量本地地区到代理的延迟
- 单机单个浏览器运行为了测试猜测的总体准确性,减少变量
另外:从代码就 rtt 写错成 rrt,这里不做修改
数据记录和简单分析
ip 情况
计数和完成率
数据总量2417条 |
计数 |
相对完成率 |
by_302_img |
885 |
1.0 |
by_ws_without_message |
811 |
0.9164 |
by_ws_with_message |
721 |
0.8147 |
注:完成率以by_302_img计数为基数。
小结
- 由于302_img请求会复用页面请求链接,因此无需再次握手,且不依赖js成功率比较高
- ws(http/1.1) 由于会重新进行TLS握手,并且依赖浏览器js,成功率打折
- 猜测由于by_ws_with_message需要的时间更长,或者网络原因导致完成率更低
猜对比率
|
计数 |
猜对比率 |
总猜对比率 |
by_302_img |
855 |
0.9661 |
0.9661 |
by 302_rrt |
875 |
0.9887 |
0.9887 |
by_ws_without_message |
790 |
0.9741 |
0.8927 |
by_ws_with_message |
716 |
0.9931 |
0.8091 |
by ws_rrt |
709 |
0.9834 |
0.8012 |
小结
- by_302_img < by_ws_without_message < by_ws_with_message,相对成功率越低的准确率越高
- 其中:总猜对比率 = 猜对比率 * 相对完成率。by_302_img 能发现 约96.6% 的代理,by_ws_without_message 能发现 约90%,而 by_ws_with_message 只能发现约80%。
- 302_rrt(302_rtt) 准确率似乎更高,实际上由于各种原因,非代理情况下误报率也有一定比例,所以看看就好。有时间再做测试说明
- ws_rrt(by_ws_with_message_rtt) 和 by_ws_with_message 都有多次数据包往返作为判断依据,并且猜对概率接近,这里认为是可信的。
代理延迟分布
由于用户到代理是一个推测值,因而3个方式记录的数据会有不同,这里仅作参考。其中(0,0] 为猜不出来。单位:秒
by_302_img
(0,0] 28 0.0316
(0,0.01] 1 0.0011
(0.01,0.02] 4 0.0045
(0.02,0.03] 4 0.0045
(0.03,0.04] 20 0.0226
(0.04,0.05] 22 0.0249
(0.05,0.06] 62 0.0701
(0.06,0.07] 71 0.0802
(0.07,0.08] 87 0.0983
(0.08,0.09] 78 0.0881
(0.09,0.10] 69 0.0780
(0.10,0.11] 81 0.0915
(0.11,0.12] 53 0.0599
(0.12,0.13] 35 0.0395
(0.13,0.14] 22 0.0249
(0.14,0.15] 12 0.0136
(0.15,0.16] 14 0.0158
(0.16,0.17] 16 0.0181
(0.17,0.18] 9 0.0102
(0.18,0.19] 5 0.0056
(0.19,0.2] 6 0.0068
(0.20,] 186 0.2102
- 3% 猜错
- 0.03到0.17秒总计642条,占总数的72.5%,占猜对的74.9%
- 20%请求大于0.2秒
- 小于0.05秒的有51条,占总数的5.7%,占猜对的5.9%
by_ws_without_message
(0,0] 7 0.0089
(0,0.01] 1 0.0013
(0.02,0.03] 2 0.0025
(0.03,0.04] 11 0.0139
(0.04,0.05] 5 0.0063
(0.05,0.06] 28 0.0355
(0.06,0.07] 57 0.0722
(0.07,0.08] 58 0.0735
(0.08,0.09] 68 0.0862
(0.09,0.10] 56 0.0710
(0.10,0.11] 72 0.0913
(0.11,0.12] 54 0.0684
(0.12,0.13] 44 0.0558
(0.13,0.14] 25 0.0317
(0.14,0.15] 25 0.0317
(0.15,0.16] 13 0.0165
(0.16,0.17] 29 0.0368
(0.17,0.18] 16 0.0203
(0.18,0.19] 12 0.0152
(0.19,0.2] 5 0.0063
(0.20,] 208 0.2636
- <1%(0.89%) 猜错
- 0.03到0.17秒总计545条,占总数的69%
- 26%请求大于0.2秒
- 小于0.05秒的有19条,占总数的2.4%
by_ws_with_message
(0,0] 2 0.0028
(0,0.01] 4 0.0056
(0.01,0.02] 7 0.0098
(0.02,0.03] 16 0.0223
(0.03,0.04] 32 0.0447
(0.04,0.05] 28 0.0391
(0.05,0.06] 48 0.0670
(0.06,0.07] 55 0.0768
(0.07,0.08] 66 0.0922
(0.08,0.09] 46 0.0642
(0.09,0.10] 58 0.0810
(0.10,0.11] 39 0.0545
(0.11,0.12] 39 0.0545
(0.12,0.13] 26 0.0363
(0.13,0.14] 28 0.0391
(0.14,0.15] 25 0.0349
(0.15,0.16] 22 0.0307
(0.16,0.17] 18 0.0251
(0.17,0.18] 19 0.0265
(0.18,0.19] 17 0.0237
(0.19,0.2] 10 0.0140
(0.20,] 113 0.1578
- <1%(0.28%) 猜错
- 0.03到0.17秒总计530条,占总数的74%
- 15%请求大于0.2秒
- 小于0.05秒的有87条,占总数的12%
分布对比
|
猜错 |
0.03到0.17秒 |
大于0.2秒 |
小于0.05秒 |
by_302_img |
3% |
72.5%(642) |
20%(186) |
5.7%(51) |
by_ws_without_message |
<1%(0.89%) |
69%(545) |
26%(208) |
2.4%(19) |
by_ws_with_message |
<1%(0.28%) |
74%(530) |
15%(113) |
12%(87) |
折线分布对比图
数据区间(0,0.2]
关于失败和错误
猜测错误
|
数量 |
by_302_img |
30 |
by_ws_without_message |
6 |
by_ws_with_message |
0 |
- 出现连接错误(丢包/乱序/重发) 22
- 另外的 14 中
- 抓包数据缺失 8 (发现是程序bug,可修复)
- 猜测错误 6
有记录但没有触发猜测
|
计数 |
比例 |
by_302_img |
0 |
0 |
by_ws_without_message |
15 |
0.0185 |
by_ws_with_message |
3 |
0.0042 |
proxy_to_server you_to_proxy total request count
0.237 0.060 21
0.27 0.074 3
0.273 0.080 8
0.321 0.099 3
0.269 0.109 9
0.257 0.113 3
0.252 0.123 3
0.272 0.127 9
0.279 0.136 6
0.279 0.136 6
0.294 0.138 8
0.295 0.159 3
0.316 0.169 3
0.281 0.181 3
0.208 0.185 9
0.25 0.204 13
0.284 0.294 3
unknow unknow 1
一共18条数据,打印出相关延迟数据,似乎与延迟无太大关系。更可能是程序问题,集中于ws。也有可能是最初的测试代码没写好导致的。
其中by_ws_without_message占比更多的原因应该归于更多的by_ws_with_message是没有被记录到。。
备忘:猜测算法版本:2023-1-21