利用ss进行数据采集

作者: 热血大桃子 | 来源:发表于2019-02-26 13:12 被阅读13次

如果有业务需要采集国外被墙网站,通常需要走vpn或者ss,这里记录了如何使用ss进行目标网站采集的代码配置。一般来说我们是开启一个ss客户端,然后通过socks5代理实现对如wiki、脸书、推特等网站数据抓取,在基于requests[socks]库的代码如下:

proxy = {'http': 'socks5://127.0.0.1:1086', 'https': 'socks5://127.0.0.1:1086'}
request.get('http://www.google.com', proxies=proxy)

上述代码只是考虑了将采集程序运行在一台搭建了ss客户端的机器上,如果我们手里面有多个ss代理,我们如何充分利用这些代理呢?如果资源充足的情况下,我们可以单独分配一台机器用作代理服务器,然后在此机器上通过绑定不同端口的方式启动多个ss代理客户端,比如:

>>> sslocal -c config1.json
>>> sslocal -c config2.json
>>> ...
>>> sslocal -c confign.json

这个时候我们就可以通过将这些代理信息配置到程序的配置文件中,每次抓取的时候就随机的获取指定数量的代理就行了。但是如果我们的程序想要通过远程的方式来调用代理服务的时候,我们需要修改ss代理客户端的配置文件了,我们可以通过修改local_address来达到监听其他机器调用的目的,配置如下:

{
  "server":"your ss server ip",
  "server_port" : 12345,
  "local_address": "0.0.0.0",
  "local_port": 1086,
  "password":"pswd",
  "timeout": 300,
  "method": "aes-256-cfb"
}

这里我们的local_address就不再是127.0.0.1了,而是0.0.0.0,即表示允许监听来自所有ip的请求。
假设我们的ss客户端代理服务器地址是192.168.20.1,我们的程序可以这样写:

proxy = {'http': 'socks5://192.168.20.1:1086', 'https': 'socks5://192.168.20.1:1086'}
request.get('http://www.google.com', proxies=proxy)

这样就达到目的。但是本方法的配置有安全问题,最好是在内网中这样配置,不然会被端口扫描器扫描到,被其他人利用。

相关文章

网友评论

    本文标题:利用ss进行数据采集

    本文链接:https://www.haomeiwen.com/subject/znlayqtx.html