python自动配置google hosts示例代码

发布时间:2020-07-29编辑:脚本学堂
用python脚本自动配置google hosts文件内容,引入了HTMLParser、os、requests、shutil等模块,以实现自动修改与配置本地hosts文件。

代码:   
 

复制代码 代码示例:
#!/usr/bin/env python
# encoding=utf8
from HTMLParser import HTMLParser
import os
import requests
import shutil
 
__author__ = 'sofn'
 
urlpath = "http://www.360kb.com/kb/2_122.html"
hostsBack = "/etc/hosts_back"
hosts = "/etc/hosts"
 
class MyHTMLParser(HTMLParser):
    def __init__(self):
        HTMLParser.__init__(self)
        self.hosts = []
        self.got = False
        self.start = False
        self.onehost = {}
        self.first = False
 
    def handle_startendtag(self, tag, attrs):
        if tag == "br" and len(attrs) == 0:
            self.got = True
            self.first = True
 
    def handle_data(self, data):
        data = data.strip()
        if self.got and self.start and data:
            if self.first:
                self.onehost["ip"] = data
                self.first = False
            else:
                self.onehost["host"] = data
                self.hosts.append(self.onehost)
                self.onehost = {}
 
        if not self.start and data == "#base services":
            self.start = True
        if self.start and data == "#google hosts 2014 end":
            self.start = False
 
if __name__ == "__main__":
    text = requests.get(urlpath).text
    hp = MyHTMLParser()
    hp.feed(text)
    hp.close()
    datas = hp.hosts
 
    if not os.path.exists(hostsBack):
        print("backup hosts")
        shutil.copy(hosts, hostsBack)
    else:
        if os.path.exists(hosts):
            os.remove(hosts)
        hostsFile = open(hosts, "a")
        with open(hostsBack) as f:
            print("write base")
            hostsFile.write(f.read())
            hostsFile.close()
 
    hostsFile = open(hosts, "a")
    hostsFile.write("rn")
    for one in datas:
        print("append " + one["ip"] + "  " + one["host"])
        hostsFile.write(one["ip"] + " " + one["host"] + "rn")
hostsFile.close()