欢迎访问墙外站:http://lzsblog.appspot.com/?p=291001
ZZJ于8月17日提出用gfwList的网址通过可信的DNS转换成IP,写入hosts文件进而实现翻墙的方法。鄙人通过Python脚本进行了实现。代码丑陋望大牛指教。
import sys,DNS,base64 def splitList(txt): arr = txt.split("\n") l = [] for line in arr: if (not len(line)): #empty line continue if (line[0] == "!"): #Comment line continue elif(line[0:2] =="@@"):#Forbidding line continue elif(line.find("/")!=-1 or line.find("*")!=-1): #URL is ignored, only domains left continue #In this case, domain name is irrelevant to protocol(http or https) elif(line[0:2] =="||"): l.append(line[2:]) elif(line[0] == "."): l.append(line[1:]) else: l.append(line) return l #Decode and decorate the input string f = open("gfwlist.txt","r") txt = f.read().replace("\n","") txt = base64.decodestring(txt) domains = splitList(txt) #Set default DNS server DNSServer=['8.8.8.8'] DNS.defaults['server']=DNSServer DNS.DiscoverNameServers() #These two varible are used to track the percentage of parsing process. l = 0 a = len(domains) for line in domains: request=DNS.Request() try: result=request.req(name=line,qtype="A") except DNS.Base.DNSError: msg=line+"\tTime Out\n" else: if not len(result.answers): msg=line+"\tNo record\n" else: msg=line+ "\tBingo\n" print line + " " + result.answers[0]["data"] print >> sys.stderr, line + msg, l*1.0/a, "%"
代码文件:makeIP.py(墙外)
文中使用了模块pyDNS,这一非标准模块需要到http://pydns.sourceforge.net/下载。
解压后安装,python setup.py install。
然后运行程序,只需要将标准输出重定向到指定文件即可。python makeIP.py > hosts
接一句Fvck GFW
PS:21:51更新,增加了过滤CNAME记录的功能,解决有跳转网站的解析问题,请下载最新的代码文件
作者:lzsdc 发表于2011-9-10 13:25:19 原文链接
―――――――――――――――――――――――――――――――――――――――――
需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。
推特用户请点击这里免翻墙上推特
请点击这里下载翻墙软件
更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com
请阅读和关注中国数字时代、翻墙技术博客GFW BLOG(免翻墙)
1 条评论:
能不能把gfwlist转成pac脚本?我用Opera
发表评论