前言
之前一直想要做一个feed读取器,并利用feed获取的链接去抓取资讯全文。然而有一些feed需要科学上网才能获取,这就让我萌生了:如何让Node科学上网来进行爬虫抓取。
查阅了资料发现,Node的http模块本身带有一个Proxy代理功能,除此之外,没有科学上网的本领。而我已经买了一年的shadowsocks账号,是不是可以把这两者结合一下?
不过这里有一个需要解决的问题:两者通讯协议不同。
shadowsocks使用的协议是socks,而proxy所发出的代理是http协议,要让两者能够通讯,就要使用Privoxy,Privoxy是一个轻量的代理服务器,与之相似的还有Squid等,不过Privoxy比较简单易用。
文章信息
- 时间 / 2017年4月30日
准备
硬件
树莓派。我使用树莓派3B作为代理服务器,你也可以用自己的本机做服务器,只不过不像树莓派可以一直24小时开机,毕竟有些爬虫抓取需要费时很久。
软件
- Shadowsocks
- Privoxy
步骤
安装Shadowsocks
首先安装python,然后再安装shadowsocks
|
|
安装完成后,我们要对shadowsocks进行配置,选择一个自己喜欢的文件夹,创建一个json配置文件:
~/conf.json
|
|
说明:
server
是ss服务商提供的域名或者IP地址;server_port
是ss服务商提供的端口号;password
是ss服务商提供的密码;method
是ss服务商提供的加密方式local_address
是本地的代理地址,127.0.0.1代表本机地址;local_port
代表本地代理端口- 其他的请按照上述默认填写即可
接下来,我们要打开Shadowsocks服务:
|
|
安装Privoxy
|
|
安装完成后,我们要对Privoxy进行详细的配置,打开配置文件/etc/privoxy/config
:
我们可以看到目录结构:
|
|
接着我们要对PAC策略做一些调整
|
|
最后我们需要开启Privoxy
|
|
有能力的同学可以自己去查阅Privoxy官网文件
验证端口
在完成了上述的操作后,我们需要先验证一下各个服务的情况
|
|
开启树莓派的防火墙
完成了上述的操作,只能保证树莓派本身能够科学上网,但如果同一个局域网发送代理,并不能成功,因为树莓派有一个内置的防火墙。
|
|
至此,应该能够通过8118端口进行访问了。
你可以在safari或者chrome的代理中加入
- 地址:192.168.1.163
- 端口:8118
就可以科学上网了。
当然我们的教程还有最后一步,就是让Node请求能够科学上网。
Node的Proxy代理
这里我使用了request模块
|
|
关于我
- 新浪微博 / @尺子先生
- Github / https://github.com/lilins