Git Product home page Git Product logo

gfw-pac's Introduction

gfw-pac

科学上网 PAC 文件生成器。通过自定义域名和** IP 地址生成 PAC(Proxy auto-config) 文件。对存在于自定义域名和解析出的 IP 在国外的域名使用代理。

特性

  • 速度快,优先按域名匹配,再按解析后的 IP 匹配
  • 可自定义需要代理的域名
  • 可自定义本地开发 TLD 域名,例如 .test
  • 可自定义不需要代理的域名
  • 如果访问的域名不在列表里,但是 IP 在国外,也返回代理服务器

用法

编辑 gfw.pac 的第一行换成自己的代理服务器直接使用,或者手工运行 gfw-pac.py 生成自己的 pac 文件。

gfw-pac.py 使用说明

usage: gfw-pac.py -f 输出的PAC文件名 -p 代理服务器 [-h]
                  [--user-rule 自定义使用代理域名的文件]
                  [--direct-rule 自定义直连域名域名的文件]
                  [--localtld-rule 本地TLD文件]
                  [--ip-file APNIC下载的delegated文件]

参数说明:

-h 显示帮助
-f (必须)输出的 pac 文件
-p (必须)指定代理服务器,例如 PROXY 192.168.1.1:3128
--user-rule 自定义使用代理的域名文件,文件里每行一个域名
--direct-rule 自定义不使用代理的域名文件,文件里每行一个域名
--localtld-rule 自定义不使用代理的顶级域,文件里每行一个域名,必须带前导圆点(例如 .test)
--ip-file 指定本地的从 apnic 下载的 IP 分配文件。若不指定则自动从 apnic 下载

举例:

./gfw-pac.py -f gfw.pac \
             -p "PROXY 192.168.1.200:3128; DIRECT" \
             --user-rule=custom-domains.txt \
             --direct-rule=direct-domains.txt \
             --localtld-rule=local-tlds.txt \
             --ip-file=delegated-apnic-latest.txt

技巧

gfw-pac's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gfw-pac's Issues

Mac osx10.11.4报错

Traceback (most recent call last):
File "gfw-pac.py", line 289, in
main()
File "gfw-pac.py", line 273, in main
direct_rule = direct_rule.splitlines(False)
AttributeError: 'NoneType' object has no attribute 'splitlines'

环境:osx10.11.4 Python 2.7.10

新手求助

我想把gfw名单放在我的vps里面,让别人使用我的ip时,无法访问被gfw墙的域名,因为我的ip只用来代理电商,大佬指点一下怎么做到跟操作的

可否增加自定义需要代理的ip?

比如,该如何让telegram的ip段使用代理呢?
谢谢🙏!

Telegram IP段

91.108.4.0/22
91.108.8.0/22
91.108.12.0/22
91.108.20.0/22
91.108.36.0/23
91.108.38.0/23
91.108.56.0/22
149.154.160.0/20
149.154.164.0/22
149.154.172.0/22

A problem in line 273 of gfw-pac.py

if args.direct_rule:
        directrule_parts = urlparse.urlsplit(args.direct_rule)
        if not directrule_parts.scheme or not directrule_parts.netloc:
            # It's not an URL, deal it as local file
            with open(args.direct_rule, 'rb') as f:
                direct_rule = f.read()
        else:
            # Yeah, it's an URL, try to download it
            print 'Downloading user rules file from %s' % args.user_rule
            direct_rule = urllib2.urlopen(args.direct_rule, timeout=10).read()
direct_rule = direct_rule.splitlines(False) 

A small mistake which causes a error if direct_rule doesn't exist.

May change to this:

if args.direct_rule:
        directrule_parts = urlparse.urlsplit(args.direct_rule)
        if not directrule_parts.scheme or not directrule_parts.netloc:
            # It's not an URL, deal it as local file
            with open(args.direct_rule, 'rb') as f:
                direct_rule = f.read()
        else:
            # Yeah, it's an URL, try to download it
            print 'Downloading user rules file from %s' % args.user_rule
            direct_rule = urllib2.urlopen(args.direct_rule, timeout=10).read()
        direct_rule = direct_rule.splitlines(False) 
else:
        direct_rule = []

三级以上域名处理?

||googleapis.com
@@||clientservices.googleapis.com
@@||fonts.googleapis.com
@@||khm.googleapis.com
@@||khm0.googleapis.com
@@||khm1.googleapis.com
@@||khm2.googleapis.com
@@||khm3.googleapis.com
@@||khmdb.googleapis.com
||storage.googleapis.com
@@||translate.googleapis.com
@@||update.googleapis.com
@@||safebrowsing.googleapis.com

例如如上规则实际是有意义的,部分三级域名 wall 内可用,但经过 gfw-pac 处理后,只剩一个 "googleapis.com": 1,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.