请选择 进入手机版 | 继续访问电脑版
查看: 6668|回复: 0

白嫖CDN,打造封不尽IP的代理池

[复制链接]
匿名
匿名  发表于 2021-3-17 15:21:27 |阅读模式


ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;text-align: left;">写在前面


接上次 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;">论如何防溯源ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;">连接WebShell 中提到的思路,我们来看看怎么借用云函数实现一个HTTP动态代理池。

提前说明一下:实现代理池的方式有很多,不局限这一种




 先看效果 



挂上代理之后,每次 HTTP 请求,都会以不同的 IP 发送出去,并且出口IP均为 IDC 机房 IP。随便挑选其中一个 IP 去 TI 上查询,可以看到 IP 很干净,专治各种买了威胁情报服务的目标





 原理 


总结下来就是一句话:利用云厂商提供的云函数(函数计算)功能,将客户端的HTTP请求进行转发,由于云函数多出口的特性,让我们也变相拥有了代理池。



云函数


有关云函数的详细介绍可以直接去看各云厂商的产品文档。我们只提几个重点:


1. 云函数不需要服务器,也就是说你不需要去买 VPS。

2. 云函数只是云厂商用自己的服务器帮你运行你上传的代码片段, 执行某个单一的逻辑,可以简单理解为只帮你执行一个函数。

3. 云函数无法长驻,调用的时候创建,执行完之后立即就销毁,所以无法直接保存状态。也正是这一点,让我们无法代理像 SSH 这种需要长连接的服务,只能代理 HTTP(s) 这种无状态的协议。


以腾讯云云函数服务为例,工作原理里面提到了复用原始连接的情况,为代理 TCP 连接提供了可能,但是目前鉴于时间原因没有深入尝试。



设计


云函数不能直接调用,同时还需要创建一个 「触发器」来触发云函数,为了方便我们选择使用 「API 网关触发器」,好处是一个 HTTP 请求就可以触发,也不需要什么别的操作。


我们整个代理池的架构如下:



SCF-Main


 这个是我们云函数,我们需要布署到云上。负责解析结构化的数据,组装 HTTP 请求,发送之后把响应再组装好返回给 API 网关。


SCF-Client


 这是客户端程序,主要做 3 件事:

  • 提供 HTTP/HTTPS 代理服务

  • 把浏览器请求的数据包组装成我们自定义的格式,发送给 API 网关

  • 把 API 网关返回的数据解析后,组装成 HTTP 代理的响应,返回给浏览器



开发——云函数侧


云函数侧要做的事情很简单,只需要接到网关传过来的数据,解开之后自己拼出来一个 HTTP 请求,发送出去,然后把Response 信息再拼好,返回给 API 网关即可。


我们定义两个结构,分别是HTTP请求和响应:



利用 http.ReadRequest 直接从原始报文创建 request 对象



接下来就是 dump 出 response 报文,组装成 API 网关返回的格式返回




至此云函数端就已经完成了


开发——SCF-Client 侧


首先按照一个正常的 http 代理服务去开发,处理浏览器和本地代理端口的数据包,这个没啥说的,大篇的文章可以找到,100行就能搞定。


常规的 HTTP 代理是把浏览器发过来的包直接就转发出去了,我们需要把这一块的逻辑重写一下。


把浏览器侧发过来的 HTTP 数据包,组装成 SCF-Main 请求格式,发送给 API 网关



拿到API网关响应包解析并处理后,转换成本地 HTTP 请求正确的响应包,返回给浏览器





 部署&使用步骤 


云函数部分


1. 打开 「函数服务(https://www.ihonker.org/data/attachment/forum/202103/17/6d7beaef81326a52e6af1ccb9f1e24a4.jpeg" data-type="jpeg" data-w="757" style="" />



2. 按照图中步骤填写,不要手欠直接点完成


 基础配置




 高级配置




 触发器配置




3. 点击完成后,自动上传 zip 包并布署,同时会创建 API 网关,直接点「立即访问」




4. 获取云函数的 API 访问路径




Client 侧


scf-client 的参数如下:



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表