python 爬虫 抓取shadowsocks vpn 地址
python 爬虫 抓取shadowsocks vpn 地址
zhailibao 发表于2年前
python 爬虫 抓取shadowsocks vpn 地址
  • 发表于 2年前
  • 阅读 533
  • 收藏 3
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 通过python 爬虫 自动抓取shadowsocks vpn 地址。
#encoding=utf8
__author__ = 'zhailb'
'''
auto get vpn host from http://www.ishadowsocks.com/ ,write json config file
20160115 密码为空情况: (?P<password>.*?)  '''
import json
import urllib
import re
gui_config = "E:\\tools\Shadowsocks-win-2.3.1\gui-config.json"
def write_config(cfg_file, vpns):
    fp = file(cfg_file)
    cfg = json.load(fp)
    fp.close()
    del cfg['configs'][:]
    for vpn in vpns:
        vpn_dict={}
        vpn_dict['server']=vpn['server']
        vpn_dict['server_port']=vpn['server_port']
        vpn_dict['password']=vpn['password']
        vpn_dict['method']=vpn['method']
        vpn_dict['remarks']=u''
        cfg['configs'].append(vpn_dict)
    with open(cfg_file,'w') as f:
        json.dump(cfg,f)

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

def getvpn(html):
    vpns = []
    reg = r"<h4>.+?服务器地址:(?P<server>.+?)</h4>.+?<h4>端口:(?P<server_port>.+?)</h4>.+?<h4>.+?密码:(?P<password>.*?)</h4>.+?<h4>加密方式:(?P<method>.+?)</h4>.+?<h4>状态:(?P<status>.+?)</h4>"
    vpn_arr =  [m.groupdict() for m in re.finditer(reg, html,re.S)]
    for vpn in vpn_arr:
        if vpn.has_key("status"):
            if re.search('green',vpn['status']):
               vpns.append(vpn)
    return vpns

if __name__ == '__main__':
    html = getHtml("http://www.ishadowsocks.com/")
    vpns = getvpn(html)
    write_config(gui_config, vpns)
共有 人打赏支持
粉丝 4
博文 36
码字总数 11831
×
zhailibao
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: