
使用PHP搭建一个HTTP代理服务器
warning 警告
本方法搭建的代理服务器传输内容均为明文,且有被篡改风险,仅供学习参考。
代理选择
涉及到网络服务,很难离开代理,HTTP就是一种常见代理。
虽然可以使用网络爬虫去网上爬取公开的代理,但这些免费代理通常速度比较慢,而且筛选起来又比较麻烦;如果你决定使用付费,你又会发现这个市场鱼龙混杂,比如我购买的150元/月的付费代理,不是说完全不能用,而是发的请求经常无缘无故的失败(10%左右出错率);而再往上价格也就更加昂贵了,那也没有必要了。
没设密码的Squid
再加上其实我的需求并不需要大量的IP,所以想要利用下闲置的服务器来跑个代理服务。
之前为了图方便,直接找了个Squid跑起来就没管了,结果之后再使用服务器时发现巨卡,top查看下发现是代理占用的,才想起来之前没有设置账号密码,估计是被别人扫到之后拿去盗用了,所以导致出现了这种状况。当时就把端口给关了,Squid也关了。
PHP搭建
现在又需要使用,所以想着搭建一个,突然发现Github上有这样的项目,直接clone下来就可以用了。
(Workerman牛逼)
0. 安装好 PHP 环境,偷懒的话直接装宝塔然后安装吧
1 | https://www.bt.cn/new/download.html#BT之前出过一些事,如服务器被入侵、服务器使用者被请喝茶等...感兴趣可以自己了解 |
1. 按照README.md的操作安装:
1 | git clone https://github.com/walkor/php-http-proxy && cd php-http-proxy && composer install |
如果没有安装git和composer的话,先自行安装。
2. 再运行:
1 | php start.php start |
如果跑不起来,估计是PHP.ini中禁用了一些函数,取消全部的禁用就可以跑起来了,如果你还有别的网站也要使用PHP,最好复制一份 PHP.ini 到当前目录然后再修改,启动的时候带上修改之后的PHP.ini地址启动:
1 | php -c php.ini start.php start |
1 | 宝塔默认PHP.ini地址 /www/server/php/80/etc/php.ini #其中80改为实际使用的版本 |
3. 默认端口是8080,如果服务器提供商有防火墙需要放行,如果安装了宝塔,在安全页面也需要放行端口。
宝塔面板放行
4. 放行之后就可以尝试连接了,我这里使用的是SwitchyOmega这个插件
先下载安装
1 | Google 商店: https://chrome.google.com/webstore/detail/padekgcemlokbadohgkifijomclgjgif |
添加代理服务器
然后进入设置页面添加代理服务器,设置IP和端口后保存应用,最后切换到设置的情景模式,就可以使用了。
设置情境模式
选择代理服务器
添加白名单功能
吸取之前的教训,专门为PHP的代理服务器添加了白名单功能,因为BT的防火墙一次只能放一个IP,所以这个工作就交给workerman来完成吧
1 | // ....前面的省略了.... |
因为校园网有多个出口IP,所以使用了判断前缀的方式,whatever,能用就行。
进程守护
最后防止程序寄掉,上个supervisord进程守护,如果不用守护的话,装个screen然后开个窗口跑PHP就行了。
进程守护
先安装,然后添加守护进程。
添加守护
1 | 名称: proxyxyxyx |
确定之后程序就跑起来了,可以在这里查看日志。
1 | /www/server/panel/plugin/supervisor/log/proxyxyxyx.out.log |
修改代码之后不会立即生效,需要在进程守护这里重启,或者手动关闭workerman(仅reload无效)。