Anyproxy的安装和使用

/ 随笔安装Linux爬虫 / 没有评论 / 855浏览

之前我的一篇文章介绍了怎么用anyproxy中间人代理的方法来爬取微信公众号,那anyproxy怎么安装?anyproxy怎么在一台机器上开多个实例?anyproxy怎么做到开机自启动?还有怎么防止别人盗用自己搭建的anyproxy服务器?

1、第一个问题,anyproxy怎么安装,首先是拿到一台云主机,先安装node(因为anyproxy需要node环境),再安装npm(npm是用来管理node的),然后用npm安装anyproxy,最后用npm安装pm2(pm2是用来管理anyproxy的)。下面以Ubuntu16.04为例,使用root用户,安装node,执行命令,

apt install nodejs-legacy

检查node是否安装成功,执行命令,

node --version

安装npm,执行命令,

apt install npm

检查npm是否安装成功,执行命令,

npm --version

安装anyproxy,执行命令,

npm install anyproxy -g

注意后面的-g不能少,检查anyproxy是否安装成功,执行命令,

anyproxy --version

安装pm2,执行命令,

npm install pm2 -g

后面的-g也不能少,检查pm2是否安装成功,执行命令,

pm2 --version

然后执行命令启动anyproxy,

anyproxy

这里有可能会出现TypeError: Buffer.alloc is not a function的错误, anyproxy启动错误 这是因为node版本和npm版本不够,需要升级node和npm,升级npm,执行命令,

npm install npm -g

升级node,执行两条命令,

npm install -g n 
n stable

但是你可能会发现执行node --version和npm --version还是显示原来的版本,其实你已经升级好node和npm的了,只是当前命令行窗口还没刷新过来,如果你新开一个命令行窗口执行node --version和npm --version,就会显示升级后的版本的了。现在再启动执行命令anyproxy启动anyproxy,如果出现以下就是anyproxy启动成功, anyproxy启动成功 进一步访问网址进行anyproxy的启动验证,访问服务器ip:8002, anyproxy网址访问 但是这样启动anyproxy只能代理http,如果要能代理https,需要执行生成ca证书的命令,

anyproxy-ca

回车确认下去既可,然后执行以下命令来启动anyproxy,

anyproxy -i

anyproxy就可以代理https了,但是这样子无法关闭命令行,所以需要用到pm2来管理anyproxy,可以执行命令,

pm2 start anyproxy -x -- -i

通过pm2来初始化并启动一个anyproxy,启动anyproxy后可以随时关闭命令行,若要查看anyproxy启动状况,执行命令,

pm2 list

若要关闭anyproxy,执行命令,

pm2 stop anyproxy

若要再启动anyproxy,执行命令,

pm2 start anyproxy

若要重启anyproxy,执行命令,

pm2 restart anyproxy

pm2管理anyproxy

2、第二个问题,anyproxy怎么在一台机器上开多个实例,上面的第一点只说到了用pm2开一个anyproxy实例,其实anyproxy是可以开多个实例的,因为anyproxy可以指定端口指定规则文件来启动。先用回直接anyproxy启动的方式来演示怎么启动不同端口不同规则文件的anyproxy实例,启动第一个anyproxy实例,执行命令,

anyproxy -i -p 8001 -w 8002 -r /usr/local/lib/node_modules/anyproxy/lib/rule_default.js

访问服务器ip:8002检查是否成功,-p参数后面跟的代理端口即手机wifi连接anyproxy代理时的端口,-w参数后面跟的是web端口即在浏览器上查看代理情况的端口,-r参数后面跟的是rule规则文件路径,rule_default.js的文件路径默认是在/usr/local/lib/node_modules/anyproxy/lib/下,其实开多个实例主要是因为rule规则文件的不同。这里的启动你可能会发现有一点不同, anyproxy指定rule规则文件启动i参数就失效 启动语句比平时多了一句,both "-i(--intercept)" and rule.beforeDealHttpsRequest are specified, the "-i" option will be ignored,这句话的意思就是如果rule规则文件中定义了beforeDealHttpsRequest函数, 那么是否代理https将完全由这个函数的返回来决定;如果没有定义这个函数,那么是否代理https就由启动anyproxy时是否传入i参数来决定;所以说这第一个anyproxy实例其实是不能代理https的。那么这里要开的第二个anyproxy实例的rule规则文件可以修改为注释掉beforeDealHttpsRequest函数, 注释掉beforeDealHttpsRequest函数 文件也放在/usr/local/lib/node_modules/anyproxy/lib/下,命名为rule_default2.js,执行命令,

anyproxy -i -p 8003 -w 8004 -r /usr/local/lib/node_modules/anyproxy/lib/rule_default2.js

访问服务器ip:8004检查是否成功,这里的启动就没有both "-i(--intercept)" and rule.beforeDealHttpsRequest are specified, the "-i" option will be ignored这句提示了, anyproxy指定注释掉beforeDealHttpsRequest函数的rule规则文件的启动 证明第二个anyproxy实例是可以代理https的。那么用回pm2来启动多个anyproxy实例,就是执行两条命令,

pm2 start anyproxy --name anyproxy1 -- -i -p 8001 -w 8002 -r /usr/local/lib/node_modules/anyproxy/lib/rule_default.js
pm2 start anyproxy --name anyproxy2 -- -i -p 8003 -w 8004 -r /usr/local/lib/node_modules/anyproxy/lib/rule_default2.js

pm2多开anyproxy --name参数后面跟的是pm2的服务名,在--参数后面添加anyproxy启动的各种参数,访问服务器ip:8002和服务器ip:8004检查是否成功。

3、第三个问题,anyproxy怎么做到开机自启动,只需执行命令,

pm2 save

pm2保存当前运行的应用 保存当前pm2运行的各个应用,重启时就会启动保存的各个应用。再执行命令,

pm2 startup

pm2生成开机服务 生成开机服务,重启云服务器检查是否成功。

4、第四个问题,怎么防止别人盗用自己搭建的anyproxy服务器,其实很简单,只要设置为只允许公司内网访问就可以了,回家想访问通过公司的vpn访问。

个人微信公众号

微信公众号:纯洁的技术分享(chunjie_tech)

纯洁的技术分享