├── pacTest ├── .npmignore ├── index.js ├── pac-config.ini ├── test ├── performanceTest.sh ├── Fiber.js ├── test.js ├── pacTest.js ├── testCases.js ├── performanceTest.js ├── flora.pac └── gfwlist2pac.pac ├── src ├── ip2int.js ├── flora.pac.template.js ├── pac-config.js └── flora.js ├── .gitignore ├── package.json ├── LICENSE └── README.md /pacTest: -------------------------------------------------------------------------------- 1 | # !/bin/bash 2 | 3 | node `dirname ${BASH_SOURCE[0]}`/test/pacTest.js "$@" 4 | 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | 2 | 3 | .idea 4 | 5 | /*.xml 6 | /*.pac 7 | /pac-config.json 8 | /delegated-apnic-latest 9 | 10 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var floraPac = module.exports = require('./src/flora.js'); 4 | 5 | if (process.mainModule === module) { 6 | floraPac.main(); 7 | } 8 | -------------------------------------------------------------------------------- /pac-config.ini: -------------------------------------------------------------------------------- 1 | # Sample config file in INI format (much user friendly) 2 | 3 | [ROOT] 4 | file = test/flora.pac 5 | proxy = "SOCKS5 127.0.0.1:7070; SOCKS 127.0.0.1:7070" 6 | 7 | 8 | [fakeIps] 9 | 211.98.70.194 10 | 211.98.70.195 11 | 12 | 13 | [normalDomains] 14 | baidu.com 15 | 16 | [walledDomains] 17 | v2ex.com 18 | google.com 19 | twitter.com 20 | -------------------------------------------------------------------------------- /test/performanceTest.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd `dirname ${BASH_SOURCE[0]}` 4 | 5 | npm install 6 | 7 | echo '' 8 | echo 'Testing pac generated by FloraPacNJS' 9 | node ./performanceTest.js ./flora.pac 10 | 11 | echo '' 12 | echo 'Testing pac generated by gfwlist2pac' 13 | node ./performanceTest.js ./gfwlist2pac.pac 14 | 15 | echo '' 16 | echo 'Testing pac generated by switchysharp' 17 | node ./performanceTest.js ./switchysharp.pac 18 | 19 | echo '' 20 | echo 'Test end' -------------------------------------------------------------------------------- /src/ip2int.js: -------------------------------------------------------------------------------- 1 | var exports = module.exports = ip4ToInt; 2 | 3 | exports.ip4ToInt = ip4ToInt; 4 | exports.intToIP4 = intToIP4; 5 | 6 | function ip4ToInt(ipv4) { 7 | var b = ipv4.split('.', 4); 8 | return (b.length == 4) 9 | && (b[0] >= 0 && b[0] <= 255) 10 | && (b[1] >= 0 && b[1] <= 255) 11 | && (b[2] >= 0 && b[2] <= 255) 12 | && (b[3] >= 0 && b[3] <= 255) 13 | ? ((b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3]) >>> 0 : null; 14 | } 15 | 16 | function intToIP4(i) { 17 | return (i >> 24 & 0xff) + "." + (i >> 16 & 0xff) + "." + (i >> 8 & 0xff) + "." + (i & 0xff); 18 | } 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # Compiled binary addons (http://nodejs.org/api/addons.html) 20 | build/Release 21 | 22 | # Dependency directory 23 | # Deployed apps should consider commenting this line out: 24 | # see https://npmjs.org/doc/faq.html#Should-I-check-my-node_modules-folder-into-git 25 | node_modules 26 | 27 | .DS_Store 28 | 29 | /*.xml 30 | /.idea/workspace.xml 31 | /.idea/**/*.xml 32 | 33 | /*.pac 34 | /pac-config.json 35 | /delegated-apnic-latest 36 | 37 | 38 | -------------------------------------------------------------------------------- /test/Fiber.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * @type {exports} an improved Fiber implementations with args supports 4 | */ 5 | 6 | var Fiber = require('fibers'); 7 | var exports = module.exports = FiberWithArgs; 8 | 9 | exports.applyWith = applyWith; 10 | 11 | 12 | function FiberWithArgs(fn, args) { 13 | if (arguments.length == 0) { 14 | // TypeError: Fiber expects 1 argument 15 | return Fiber(); 16 | } 17 | 18 | if (arguments.length == 1) { 19 | return Fiber(fn); 20 | } 21 | 22 | return applyWith(fn, null, Array.prototype.slice.call(arguments, 1)); 23 | } 24 | 25 | 26 | function applyWith(fn, thisArg, args) { 27 | if (typeof fn == "function") { 28 | return Fiber(function () {fn.apply(thisArg, args)}); 29 | } 30 | throw new TypeError("Fiber expects a function"); 31 | } 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "flora-pac", 3 | "version" : "0.0.7", 4 | "description" : "A NodeJS port of Flora PAC generator", 5 | "author" : "William Leung ", 6 | "license" : "MIT", 7 | "keywords" : ["flora", "pac", "proxy.pac"], 8 | "bin" : { 9 | "flora-pac" : "./index.js" 10 | }, 11 | "repository" : { 12 | "type" : "git", 13 | "url" : "https://github.com/lwr/FloraPacNJS.git" 14 | }, 15 | "bugs" : { 16 | "url" : "https://github.com/lwr/FloraPacNJS/issues" 17 | }, 18 | "scripts" : { 19 | "test" : "node test/test" 20 | }, 21 | "dependencies" : { 22 | "ini" : "~1.2.1", 23 | "yargs" : "~1.3.1" 24 | }, 25 | "devDependencies" : { 26 | "fibers" : "~1.0.1" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * generate test pac file and run all test cases 3 | */ 4 | 5 | 6 | var floraPac = require("../src/flora"); 7 | var testCases = require('./testCases'); 8 | 9 | floraPac({ 10 | file : "./flora-test.pac", 11 | internalProxy : "INTERNAL", 12 | proxy : "PROXY", 13 | fakeIps : ["127.0.0.1"], 14 | callback : function () { 15 | // generate the pac adaptor function from pac file 16 | var FindProxyForURL = require("./pacTest")(this.file); 17 | 18 | // remove temp pac file 19 | require('fs').unlinkSync(this.file); 20 | console.info("File dropped:", this.file); 21 | 22 | // run test cases once 23 | testCases("Test1", FindProxyForURL, this.proxy, this.internalProxy).run(); 24 | 25 | // run test cases twice 26 | testCases("Test2", FindProxyForURL, this.proxy, this.internalProxy).run(); 27 | } 28 | }); 29 | 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 lwr 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/flora.pac.template.js: -------------------------------------------------------------------------------- 1 | // Generated by: https://github.com/lwr/FloraPacNJS 2 | 3 | var proxies = [/*[proxies]*/]; 4 | var domains = {/*{domains}*/}; 5 | var ips = [/*[ips]*/]; 6 | 7 | // noinspection JSUnusedGlobalSymbols, JSUnusedLocalSymbols 8 | /** 9 | * @return {string} 10 | */ 11 | function FindProxyForURL(url, host) { 12 | 13 | return proxies[findDomain() || findIp() || 3]; 14 | 15 | function findDomain() { 16 | for (var domain = host; ;) { 17 | var i = domains[domain]; 18 | if (i) { 19 | return i; 20 | } 21 | var dot = domain.indexOf('.'); 22 | if (dot < 0) { 23 | // plain host or undefined 24 | return (host == domain) ? 1 : 0; 25 | } 26 | domain = domain.substr(dot + 1); 27 | } 28 | } 29 | 30 | 31 | function ip4ToInt(ipv4) { 32 | var b = ipv4.split('.', 4); 33 | return (b.length == 4) 34 | && (b[0] >= 0 && b[0] <= 255) 35 | && (b[1] >= 0 && b[1] <= 255) 36 | && (b[2] >= 0 && b[2] <= 255) 37 | && (b[3] >= 0 && b[3] <= 255) 38 | ? ((b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3]) >>> 0 : null; 39 | } 40 | 41 | 42 | function findIp() { 43 | // noinspection JSUnresolvedFunction 44 | var intIp = ip4ToInt(host); 45 | var hostIsIp = (intIp != null); 46 | if (!hostIsIp) { 47 | intIp = ip4ToInt(dnsResolve(host) || ""); 48 | if (intIp == null) { 49 | return 0; 50 | } 51 | } 52 | 53 | var left = 0, right = ips.length; 54 | do { 55 | var mid = Math.floor((left + right) / 2); 56 | if (intIp < ips[mid][0]) { 57 | right = mid; 58 | } else if (intIp >= ips[mid][0] + ips[mid][1]) { 59 | left = mid + 1; 60 | } else { 61 | var result = ips[mid][2] || 2; // default is normalIps 62 | // pass through fake ip (like 127.0.0.1) direct accessing 63 | return (hostIsIp && result == 4) ? 1 : result; 64 | } 65 | } while (left + 1 <= right); 66 | return 0; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /test/pacTest.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /** 4 | * 5 | * ---------- usage ------------------------------------------------- 6 | 7 | var FindProxyForURL = require("./test/pacTest")("flora.pac"); 8 | require('fibers')(function() { 9 | console.log(FindProxyForURL(null, "twitter.com")); 10 | }).run(); 11 | 12 | */ 13 | 14 | 15 | var dns = require('dns'); 16 | var fs = require('fs'); 17 | var vm = require('vm'); 18 | var Fiber = require('fibers'); 19 | var Future = require('fibers/future'); 20 | 21 | module.exports = pacTester; 22 | 23 | function pacTester(pacFile, context_) { 24 | 25 | var pacData = fs.readFileSync(pacFile).toString(); 26 | 27 | // noinspection JSUnusedGlobalSymbols 28 | var context = { 29 | isPlainHostName : function (host) { 30 | return (host.indexOf('.') == -1) 31 | }, 32 | dnsResolve : function (host) { 33 | FindProxyForURL.dnsResolveResult = Future.wrap(dns.lookup)(host, null).wait(); 34 | return FindProxyForURL.dnsResolveResult; 35 | }, 36 | console : console 37 | }; 38 | 39 | for (var i in context_) { 40 | if (context_.hasOwnProperty(i)) { 41 | context[i] = context_[i]; 42 | } 43 | } 44 | 45 | var FindProxyForURL = vm.runInNewContext(pacData + "; FindProxyForURL", context, pacFile); 46 | if (typeof FindProxyForURL == "function") { 47 | return FindProxyForURL; 48 | } else { 49 | console.error("Invalid pac file:", pacFile); 50 | return function () {}; 51 | } 52 | } 53 | 54 | 55 | // command line mode 56 | if (process.mainModule === module) { 57 | 58 | var argv = require('yargs')["argv"]; 59 | var filename = argv._[0]; 60 | var host = argv._[1]; 61 | 62 | if (filename && host) { 63 | var FindProxyForURL = pacTester(filename); 64 | Fiber(function () { 65 | var proxy = FindProxyForURL(null, host); 66 | var ip = FindProxyForURL.dnsResolveResult; 67 | if (ip) { 68 | console.info("Host '%s' was resolved to: %s (%s)", host, ip, require("../src/ip2int")(ip)); 69 | } 70 | console.info(proxy); 71 | }).run(); 72 | } else { 73 | console.info("" 74 | + "Usage: pacTest [PAC_FILE] [HOSTNAME]\n" 75 | + "\n" 76 | + "Examples:\n" 77 | + " pacTest flora.pac twitter.com\n" 78 | + ""); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /test/testCases.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This test case should run after the pac script. 3 | * 4 | * @type {exports} a wrapped fiber function wait to run test cases 5 | */ 6 | 7 | 8 | module.exports = testCases; 9 | 10 | 11 | function testCases() { 12 | return require('./Fiber').applyWith(runTestCases, null, arguments); 13 | } 14 | 15 | 16 | function runTestCases(name, FindProxyForURL, proxy, internalProxy) { 17 | 18 | var direct = 'DIRECT'; 19 | 20 | var totalCount = 0; 21 | var successCount = 0; 22 | var failCount = 0; 23 | 24 | internalProxy = internalProxy || direct; 25 | 26 | function assertProxy(expect, host) { 27 | ++totalCount; 28 | FindProxyForURL.dnsResolveResult = null; 29 | var actual = FindProxyForURL(host, host); 30 | if ((expect == actual) 31 | || (expect == proxy && actual == proxy + "; DIRECT") 32 | || (expect == internalProxy && actual == internalProxy + "; DIRECT")) { 33 | ++successCount; 34 | return; 35 | } 36 | 37 | ++failCount; 38 | var ip = FindProxyForURL.dnsResolveResult; 39 | if (ip) { 40 | console.error("Test failed: host=%s(%s), expect=%s, actual=%s", host, ip, expect, actual); 41 | } else { 42 | console.error("Test failed: host=%s, expect=%s, actual=%s", host, expect, actual); 43 | } 44 | } 45 | 46 | 47 | var time = process.hrtime(); 48 | 49 | function endTest() { 50 | var diff = process.hrtime(time); 51 | var seconds = (diff[0] * 1e3 + diff[1] * 1e-6); 52 | if (failCount) { 53 | console.info("%s end in %d ms, average in %d ms", name, seconds, seconds / (successCount + failCount)); 54 | console.assert(false, 55 | "%s result: total=%d, success=%d, failed=%d", name, totalCount, successCount, failCount); 56 | } else { 57 | console.info("%s passed in %d ms, average in %d ms, total=%d", 58 | name, seconds, seconds / totalCount, totalCount); 59 | } 60 | } 61 | 62 | 63 | assertProxy(proxy, 'www.google.com'); 64 | // noinspection SpellCheckingInspection 65 | assertProxy(proxy, 'smtp.google.com'); 66 | assertProxy(proxy, 'a.google.com'); 67 | assertProxy(proxy, 'a.b.google.com'); 68 | assertProxy(proxy, 'a.b.c.google.com'); 69 | assertProxy(proxy, 'www.twitter.com'); 70 | assertProxy(proxy, 'www.facebook.com'); 71 | assertProxy(proxy, 'www.google.co.jp'); 72 | assertProxy(proxy, 'www.facebook.com'); 73 | assertProxy(proxy, 'www.youtube.com'); 74 | // noinspection SpellCheckingInspection 75 | assertProxy(proxy, 's.ytimg.com'); 76 | // noinspection SpellCheckingInspection 77 | assertProxy(proxy, 'r1---sn-a5m7zu7l.googlevideo.com'); 78 | // noinspection SpellCheckingInspection 79 | assertProxy(proxy, 'appspot.com'); 80 | // noinspection SpellCheckingInspection 81 | assertProxy(proxy, 'my.appspot.com'); 82 | // noinspection SpellCheckingInspection 83 | assertProxy(proxy, 'www.userdefined.com'); 84 | 85 | assertProxy(internalProxy, 'www.baidu.com'); 86 | // noinspection SpellCheckingInspection 87 | assertProxy(internalProxy, 'www.youku.com'); 88 | // noinspection SpellCheckingInspection 89 | assertProxy(internalProxy, 'www.taobao.com'); 90 | assertProxy(internalProxy, 'www.iCoremail.net'); 91 | 92 | assertProxy(direct, 'simpleName'); 93 | assertProxy(direct, '127.0.0.1'); 94 | assertProxy(direct, '127.0.0.255'); 95 | assertProxy(direct, '192.168.255.255'); 96 | assertProxy(proxy, '192.169.0.0'); 97 | 98 | endTest(); 99 | } 100 | 101 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Flora Pac for NodeJS [![NPM version](https://badge.fury.io/js/flora-pac.png)](http://badge.fury.io/js/flora-pac) 2 | ==================== 3 | 4 | A NodeJS port of [Flora PAC] generator. 5 | 6 | 7 | ## Installation / Usage 8 | 9 | 1. Install from npm 10 | ````bash 11 | $ sudo npm install -g flora-pac 12 | ```` 13 | 14 | 2. Create your own `pac-config.json` first (see next chapter) 15 | 16 | 3. Run (the default output file is `flora.pac`) 17 | ````bash 18 | $ flora-pac 19 | ```` 20 | 21 | or to get some command-line help 22 | ````bash 23 | $ flora-pac -h 24 | ```` 25 | 26 | 27 | ## Configurations 28 | 29 | Make a config file `pac-config.ini` like this 30 | 31 | ```ini 32 | [ROOT] 33 | proxy = "SOCKS5 127.0.0.1:7070; SOCKS 127.0.0.1:7070" 34 | 35 | [fakeIps] 36 | 211.98.70.194 37 | 211.98.70.195 38 | 39 | [normalDomains] 40 | baidu.com 41 | 42 | [walledDomains] 43 | v2ex.com 44 | google.com 45 | youtube.com 46 | twitter.com 47 | facebook.com 48 | ``` 49 | 50 | You could find more available options from [src/pac-config.js](src/pac-config.js). 51 | 52 | Now INI / JSON file formats are both supported. 53 | 54 | All things done with only one command 55 | ```bash 56 | $ node 57 | ``` 58 | 59 | ## Tests 60 | 61 | You could run a simple test (assume that `flora.pac` is already generated) 62 | ```bash 63 | $ npm install 64 | $ ./pacTest flora.pac twitter.com 65 | $ node test/pacTest flora.pac twitter.com 66 | ``` 67 | 68 | Or run batch tests 69 | ```bash 70 | $ npm install 71 | $ node test/test 72 | ``` 73 | 74 | 75 | ## Speed up the generation time 76 | 77 | The CHN IP is requested from apnic 78 | 79 | There is approximate 1.6 MB data to download. 80 | 81 | You can do it yourself using this command 82 | 83 | ```bash 84 | $ curl http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O 85 | ``` 86 | 87 | If you need to generate multiple files, this will help generating speed up much faster. 88 | 89 | 90 | ## Performance 91 | 92 | The Performance test code is just copied from [clowwindy's gfwlist2pac][gfwlist2pac] 93 | 94 | An example of generated PAC file is [here](test/flora.pac) 95 | 96 | Flora Pac uses `dnsResolve` which makes the execution time very unpredictable. 97 | 98 | The test code is modified that **return a random IP every time while lookup any host**. 99 | 100 | Here is the test result: 101 | 102 | ``` 103 | Testing pac generated by FloraPacNJS 104 | size: 49324 bytes 105 | total: 105.797055 ms 106 | average: 1.528859176300578 ns 107 | 108 | Testing pac generated by gfwlist2pac 109 | size: 54800 bytes 110 | total: 27.962916 ms 111 | average: 0.40408838150289017 ns 112 | 113 | Testing pac generated by switchysharp 114 | size: 506472 bytes 115 | total: 41940.2284 ms 116 | average: 606.0726647398843 ns 117 | ``` 118 | 119 | 120 | ## TODO: 121 | - [X] Add tests 122 | - [X] Add command-line: `--help / --proxy / --internal-proxy / --file / ...` 123 | - ~~Generate minimal pac file, etc: `flora.min.pac` (meaningless, cancelled)~~ 124 | - [X] Add supports for INI config file rather than general json 125 | - [ ] Add supports for import domains from [GFW whitelist]: `whitelist.pac` (smaller) 126 | - [ ] Add supports for import domains from [fqdns]: `china_domains.txt` (much bigger) 127 | - [ ] Add supports for import domains from [gfwlist.txt] (blacklist, much bigger) 128 | 129 | 130 | ## See also 131 | * [Python original Flora Pac][Flora Pac] 132 | * [Python fork by usufu](https://github.com/usufu/Flora_Pac) 133 | * [clowwindy's gfwlist2pac][gfwlist2pac] 134 | * [GFW whitelist] 135 | * [fqrouter/fqdns][fqdns] 136 | 137 | [Flora Pac]: https://github.com/Leask/Flora_Pac 138 | [gfwlist2pac]: https://github.com/clowwindy/gfwlist2pac 139 | [gfwlist.txt]: https://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt 140 | [GFW whitelist]: https://github.com/n0wa11/gfw_whitelist 141 | [fqdns]: https://github.com/fqrouter/fqdns 142 | 143 | -------------------------------------------------------------------------------- /src/pac-config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | "file" : "flora.pac", 4 | "proxy" : "SOCKS5 127.0.0.1:7070; SOCKS 127.0.0.1:7070", 5 | 6 | // helpful if your network uses internal proxy 7 | "internalProxy" : null, 8 | 9 | // domains that always do not use proxy 10 | "localDomains" : [], 11 | 12 | // domains that maybe use direct accessible or through a internal proxy 13 | "normalDomains" : ["cn", "baidu.com", "v2ex.com"], 14 | 15 | // domains that only be accessible through proxy 16 | "walledDomains" : ["google.com", "twitter.com", "facebook.com", "youtube.com" ], 17 | 18 | // Intranet IPs (ranges) 19 | "localIps" : [ 20 | ["10.0.0.0", "11.0.0.0"], 21 | ["192.168.0.0", "192.169.0.0"], 22 | ["127.0.0.1", "127.0.1.0"], 23 | ["172.16.0.0", "172.32.0.0"] 24 | ], 25 | 26 | // China IPs (ranges) 27 | "normalIps" : [], 28 | 29 | // Fake IPs (list) returned from poison DNS injection 30 | "fakeIps" : [] 31 | }; 32 | 33 | 34 | module.exports["fakeIps"].push( 35 | '74.125.127.102', 36 | '74.125.155.102', 37 | '74.125.39.102', 38 | '74.125.39.113', 39 | '209.85.229.138', 40 | '128.121.126.139', 41 | '159.106.121.75', 42 | '169.132.13.103', 43 | '192.67.198.6', 44 | '202.106.1.2', 45 | '202.181.7.85', 46 | '203.161.230.171', 47 | '203.98.7.65', 48 | '207.12.88.98', 49 | '208.56.31.43', 50 | '209.145.54.50', 51 | '209.220.30.174', 52 | '209.36.73.33', 53 | '211.94.66.147', 54 | '213.169.251.35', 55 | '216.221.188.182', 56 | '216.234.179.13', 57 | '243.185.187.39', 58 | '37.61.54.158', 59 | '4.36.66.178', 60 | '46.82.174.68', 61 | '59.24.3.173', 62 | '64.33.88.161', 63 | '64.33.99.47', 64 | '64.66.163.251', 65 | '65.104.202.252', 66 | '65.160.219.113', 67 | '66.45.252.237', 68 | '72.14.205.104', 69 | '72.14.205.99', 70 | '78.16.49.15', 71 | '8.7.198.45', 72 | '93.46.8.89' 73 | ); 74 | 75 | // noinspection SpellCheckingInspection 76 | module.exports["normalDomains"].push( 77 | '10010.com', 78 | '115.com', 79 | '123u.com', 80 | '126.com', 81 | '126.net', 82 | '163.com', 83 | '17173.com', 84 | '178.com', 85 | '17cdn.com', 86 | '21cn.com', 87 | '2288.org', 88 | '3322.org', 89 | '360buy.com', 90 | '360buyimg.com', 91 | '360doc.com', 92 | '360safe.com', 93 | '36kr.com', 94 | '400gb.com', 95 | '4399.com', 96 | '51.la', 97 | '51buy.com', 98 | '51cto.com', 99 | '51job.com', 100 | '51jobcdn.com', 101 | '5d6d.com', 102 | '5d6d.net', 103 | '61.com', 104 | '6600.org', 105 | '6rooms.com', 106 | '7766.org', 107 | '7k7k.com', 108 | '8800.org', 109 | '8866.org', 110 | '90g.org', 111 | '91.com', 112 | '9966.org', 113 | 'acfun.tv', 114 | 'aicdn.com', 115 | 'ali213.net', 116 | 'alibaba.com', 117 | 'alicdn.com', 118 | 'aliexpress.com', 119 | 'aliimg.com', 120 | 'alikunlun.com', 121 | 'alimama.com', 122 | 'alipay.com', 123 | 'alipayobjects.com', 124 | 'alisoft.com', 125 | 'aliyun.com', 126 | 'aliyuncdn.com', 127 | 'aliyuncs.com', 128 | 'anzhi.com', 129 | 'appinn.com', 130 | 'apple.com', 131 | 'appsina.com', 132 | 'archlinuxcn.org', 133 | 'atpanel.com', 134 | 'baidu.com', 135 | 'baidupcs.com', 136 | 'baidustatic.com', 137 | 'baifendian.com', 138 | 'baihe.com', 139 | 'baixing.com', 140 | 'bdimg.com', 141 | 'bdstatic.com', 142 | 'bilibili.tv', 143 | 'blogbus.com', 144 | 'blueidea.com', 145 | 'ccb.com', 146 | 'cctv.com', 147 | 'cctvpic.com', 148 | 'cdn20.com', 149 | 'china.com', 150 | 'chinabyte.com', 151 | 'chinacache.com', 152 | 'chinacache.net', 153 | 'chinamobile.com', 154 | 'chinanews.com', 155 | 'chinaren.com', 156 | 'chinaunix.net', 157 | 'chinaz.com', 158 | 'cloudcdn.net', 159 | 'cn.bing.com', 160 | 'cn.debian.org', 161 | 'cnbeta.com', 162 | 'cnbetacdn.com', 163 | 'cnblogs.com', 164 | 'cnepub.com', 165 | 'cnzz.com', 166 | 'comsenz.com', 167 | 'csdn.net', 168 | 'ct10000.com', 169 | 'ctdisk.com', 170 | 'dangdang.com', 171 | 'dbank.com', 172 | 'dedecms.com', 173 | 'diandian.com', 174 | 'dianping.com', 175 | 'discuz.com', 176 | 'discuz.net', 177 | 'dl.google.com', 178 | 'docin.com', 179 | 'donews.com', 180 | 'dospy.com', 181 | 'douban.com', 182 | 'douban.fm', 183 | 'duapp.com', 184 | 'duba.net', 185 | 'duomi.com', 186 | 'duote.com', 187 | 'duowan.com', 188 | 'egou.com', 189 | 'et8.org', 190 | 'etao.com', 191 | 'f3322.org', 192 | 'fantong.com', 193 | 'fenzhi.com', 194 | 'fhldns.com', 195 | 'ganji.com', 196 | 'gaopeng.com', 197 | 'geekpark.net', 198 | 'gfan.com', 199 | 'gtimg.com', 200 | 'hacdn.net', 201 | 'hadns.net', 202 | 'hao123.com', 203 | 'hao123img.com', 204 | 'hc360.com', 205 | 'hdslb.com', 206 | 'hexun.com', 207 | 'hiapk.com', 208 | 'hichina.com', 209 | 'hoopchina.com', 210 | 'huanqiu.com', 211 | 'hudong.com', 212 | 'huochepiao.com', 213 | 'hupu.com', 214 | 'iask.com', 215 | 'iciba.com', 216 | 'idqqimg.com', 217 | 'ifanr.com', 218 | 'ifeng.com', 219 | 'ifengimg.com', 220 | 'ijinshan.com', 221 | 'iqiyi.com', 222 | 'it168.com', 223 | 'itcpn.net', 224 | 'iteye.com', 225 | 'itouzi.com', 226 | 'jandan.net', 227 | 'jd.com', 228 | 'jiashule.com', 229 | 'jiasule.com', 230 | 'jiathis.com', 231 | 'jiayuan.com', 232 | 'jiepang.com', 233 | 'jing.fm', 234 | 'jobbole.com', 235 | 'jstv.com', 236 | 'jumei.com', 237 | 'kaixin001.com', 238 | 'kandian.com', 239 | 'kandian.net', 240 | 'kanimg.com', 241 | 'kankanews.com', 242 | 'kdnet.net', 243 | 'koudai8.com', 244 | 'ku6.com', 245 | 'ku6cdn.com', 246 | 'ku6img.com', 247 | 'kuaidi100.com', 248 | 'kugou.com', 249 | 'lashou.com', 250 | 'letao.com', 251 | 'letv.com', 252 | 'lietou.com', 253 | 'linezing.com', 254 | 'loli.mg', 255 | 'loli.vg', 256 | 'lvping.com', 257 | 'lxdns.com', 258 | 'mangocity.com', 259 | 'mapbar.com', 260 | 'mcbbs.net', 261 | 'mediav.com', 262 | 'meilishuo.com', 263 | 'meituan.com', 264 | 'meituan.net', 265 | 'meizu.com', 266 | 'microsoft.com', 267 | 'miui.com', 268 | 'moe123.com', 269 | 'moegirl.org', 270 | 'mop.com', 271 | 'mtime.com', 272 | 'my-card.in', 273 | 'mydrivers.com', 274 | 'mzstatic.com', 275 | 'netease.com', 276 | 'newsmth.net', 277 | 'ngacn.cc', 278 | 'nuomi.com', 279 | 'okbuy.com', 280 | 'optaim.com', 281 | 'oschina.net', 282 | 'paipai.com', 283 | 'pcbeta.com', 284 | 'pchome.net', 285 | 'pcpop.com', 286 | 'pengyou.com', 287 | 'phoenixlzx.com', 288 | 'phpwind.net', 289 | 'pingan.com', 290 | 'pool.ntp.org', 291 | 'pplive.com', 292 | 'pps.tv', 293 | 'ppstream.com', 294 | 'pptv.com', 295 | 'pubyun.com', 296 | 'qhimg.com', 297 | 'qianlong.com', 298 | 'qidian.com', 299 | 'qingdaonews.com', 300 | 'qiniu.com', 301 | 'qiniudn.com', 302 | 'qiushibaike.com', 303 | 'qiyi.com', 304 | 'qiyipic.com', 305 | 'qq.com', 306 | 'qqmail.com', 307 | 'qstatic.com', 308 | 'qunar.com', 309 | 'qunarzz.com', 310 | 'qvbuy.com', 311 | 'renren.com', 312 | 'renrendai.com', 313 | 'rrfmn.com', 314 | 'rrimg.com', 315 | 'sanguosha.com', 316 | 'sdo.com', 317 | 'sina.com', 318 | 'sinaapp.com', 319 | 'sinaedge.com', 320 | 'sinaimg.com', 321 | 'sinajs.com', 322 | 'skycn.com', 323 | 'smzdm.com', 324 | 'sogou.com', 325 | 'sohu.com', 326 | 'soku.com', 327 | 'solidot.org', 328 | 'soso.com', 329 | 'soufun.com', 330 | 'soufunimg.com', 331 | 'staticfile.org', 332 | 'staticsdo.com', 333 | 'steamcn.com', 334 | 'suning.com', 335 | 'szzfgjj.com', 336 | 'tanx.com', 337 | 'taobao.com', 338 | 'taobaocdn.com', 339 | 'tbcache.com', 340 | 'tdimg.com', 341 | 'tencent.com', 342 | 'tenpay.com', 343 | 'tgbus.com', 344 | 'thawte.com', 345 | 'tiancity.com', 346 | 'tianyaui.com', 347 | 'tiexue.net', 348 | 'tmall.com', 349 | 'tmcdn.net', 350 | 'tom.com', 351 | 'tomonline-inc.com', 352 | 'tuan800.com', 353 | 'tuan800.net', 354 | 'tuanimg.com', 355 | 'tudou.com', 356 | 'tudouui.com', 357 | 'tuniu.com', 358 | 'u148.net', 359 | 'u17.com', 360 | 'ubuntu.com', 361 | 'ucjoy.com', 362 | 'uni-marketers.com', 363 | 'unionpay.com', 364 | 'unionpaysecure.com', 365 | 'upaiyun.com', 366 | 'upyun.com', 367 | 'uusee.com', 368 | 'uuu9.com', 369 | 'vaikan.com', 370 | 'vancl.com', 371 | 'vcimg.com', 372 | 'verycd.com', 373 | 'wandoujia.com', 374 | 'wdjimg.com', 375 | 'weibo.com', 376 | 'weiphone.com', 377 | 'weiyun.com', 378 | 'west263.com', 379 | 'wrating.com', 380 | 'wscdns.com', 381 | 'wumii.com', 382 | 'xdcdn.net', 383 | 'xiachufang.com', 384 | 'xiami.com', 385 | 'xiami.net', 386 | 'xiaomi.com', 387 | 'xiaonei.com', 388 | 'xiazaiba.com', 389 | 'xici.net', 390 | 'xilu.com', 391 | 'xinhuanet.com', 392 | 'xinnet.com', 393 | 'xlpan.com', 394 | 'xn--fiqs8s', 395 | 'xnpic.com', 396 | 'xungou.com', 397 | 'xunlei.com', 398 | 'ydstatic.com', 399 | 'yesky.com', 400 | 'yeyou.com', 401 | 'yihaodian.com', 402 | 'yihaodianimg.com', 403 | 'yingjiesheng.com', 404 | 'yintai.com', 405 | 'yinyuetai.com', 406 | 'yiqifa.com', 407 | 'yixun.com', 408 | 'ykimg.com', 409 | 'ynet.com', 410 | 'youdao.com', 411 | 'yougou.com', 412 | 'youku.com', 413 | 'yupoo.com', 414 | 'yy.com', 415 | 'yyets.com', 416 | 'zbjimg.com', 417 | 'zhaopin.com', 418 | 'zhi.hu', 419 | 'zhihu.com', 420 | 'zhimg.com', 421 | 'zhubajie.com', 422 | 'zongheng.com' 423 | ); 424 | -------------------------------------------------------------------------------- /src/flora.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var fs = require('fs'); 3 | var ip4ToInt = require('./ip2int').ip4ToInt; 4 | var intToIP4 = require('./ip2int').intToIP4; 5 | 6 | var pacTemplate = fs.readFileSync(path.dirname(module.filename) + "/" + 7 | "flora.pac.template.js", {encoding : "utf8"}); 8 | 9 | // jshint -W103:false 10 | var baseConfig = require("./pac-config"); 11 | 12 | if (process.mainModule === module) { 13 | main(); 14 | } 15 | 16 | module.exports = floraPac; 17 | 18 | floraPac.main = main; 19 | 20 | function main() { 21 | // a simple test for command-line-arguments-existent that make 'optimist' not really required 22 | var argv = (process.argv.length > 2) ? require('yargs')["argv"] : null; 23 | if (argv && (argv.help || argv.h)) { 24 | console.info("" 25 | + "usage: flora-pac [-h] [-f PAC] [-p PROXY] [-c CONFIG]\n" 26 | + "\n" 27 | + "Valid options:\n" 28 | + " -h [--help] : show this help message and exit\n" 29 | + ' -c [--config] ARG : path to json/ini format config file\n' 30 | + ' defaults to "pac-config.json" in current dir\n' 31 | + ' -f [--file] ARG : overrides the "file" option of config file\n' 32 | + ' path to output pac\n' 33 | + ' -x [--proxy] ARG : overrides the "proxy" option of config file\n' 34 | + ' the proxy parameter in the pac file, for example,\n' 35 | + ' "SOCKS5 127.0.0.1:7070; SOCKS 127.0.0.1:7070"\n' 36 | + ' -i [--internal-proxy] ARG : overrides the "internalProxy" option of config file\n' 37 | + ' internal proxy server, defaults to "DIRECT", it\'s useful\n' 38 | + ' if you need an internal proxy to access outside network\n' 39 | + ""); 40 | return; 41 | } 42 | floraPac(null, argv); 43 | } 44 | 45 | 46 | function readOptions(target, options, key/*, aliasKey1, aliasKey2, ...*/) { 47 | if (options) { 48 | for (var i = 2; i < arguments.length; i++) { 49 | var value = options[arguments[i]]; 50 | if (value != null) { 51 | if (target) { 52 | target[key] = value; 53 | } 54 | return value; 55 | } 56 | } 57 | } 58 | } 59 | 60 | 61 | function readConfig(configFile) { 62 | if (configFile || ["pac-config.json", "pac-config.ini"].some(function (f) { 63 | if (fs.existsSync(f)) { 64 | configFile = f; 65 | return true; 66 | } 67 | })) { 68 | console.log("Using config file: " + configFile); 69 | var content = fs.readFileSync(configFile, "utf8"); 70 | if (configFile.match(/\.ini$/)) { 71 | var iniConf = require("ini").parse(content) || {}; 72 | var result = iniConf["pac-config"] || {}; 73 | for (var section in iniConf) { 74 | if (iniConf.hasOwnProperty(section) && (section != "pac-config")) { 75 | if (section.match((/(Domains|Ips)$/))) { 76 | result[section] = Object.keys(iniConf[section]); 77 | } else { 78 | result[section] = iniConf[section]; 79 | } 80 | } 81 | } 82 | return result; 83 | } 84 | return JSON.parse(content || "{}"); 85 | } 86 | } 87 | 88 | 89 | function floraPac(userConfig, options) { 90 | // do a copy 91 | var config = JSON.parse(JSON.stringify(baseConfig)); 92 | 93 | if (userConfig == null) { 94 | userConfig = readConfig(readOptions(null, options, "config", "c")) || {}; 95 | } 96 | 97 | readOptions(userConfig, options, "file", "f"); 98 | readOptions(userConfig, options, "proxy", "x"); 99 | readOptions(userConfig, options, "internalProxy", "internal-proxy", "i"); 100 | 101 | for (var key in userConfig) { 102 | if (userConfig.hasOwnProperty(key)) { 103 | if (Array.isArray(config[key])) { 104 | Array.prototype.push.apply(config[key], userConfig[key]); 105 | } else { 106 | config[key] = userConfig[key]; 107 | } 108 | } 109 | } 110 | 111 | config["ips"] = config["ips"] || []; 112 | fetchChnIpList(function (ip, count, date) { 113 | var data = [ip4ToInt(ip), parseInt(count)]; 114 | config["ips"].push(data); 115 | if (config.debug) { 116 | console.log("Found chn ip: %s - %s at %s", ip, intToIP4(data[1]), date); 117 | } 118 | }, function (ok) { 119 | if (ok) { 120 | var pacData = generatePac(config, options || {}); 121 | fs.writeFileSync(config.file, pacData, {encoding : 'utf8'}); 122 | console.log("File generated:", config.file); 123 | if (config.callback) { 124 | config.callback(); 125 | } 126 | } 127 | }); 128 | } 129 | 130 | 131 | function generatePac(config, options) { 132 | // 1: LOCAL (INTRANET), 2: NORMAL (CHINA-NET), 3: GFWed (INTERNET), 4: poisoned 133 | for (var key in config) { 134 | if (!config.hasOwnProperty(key)) { 135 | // noinspection UnnecessaryContinueJS 136 | continue; 137 | 138 | } else if (key == "localIps") { 139 | readIpList(key, 1); 140 | } else if (key == "normalIps") { 141 | readIpList(key, 2); 142 | } else if (key == "fakeIps") { 143 | readIpList(key, 4); 144 | 145 | } else if (key == "localDomains") { 146 | readDomainList(key, 1); 147 | } else if (key == "normalDomains") { 148 | readDomainList(key, 2); 149 | } else if (key == "walledDomains") { 150 | readDomainList(key, 3); 151 | } 152 | } 153 | 154 | function readIpList(key, action) { 155 | config["ips"] = config["ips"] || []; 156 | config[key].forEach(function (item) { 157 | if (typeof item == 'string') { 158 | var value = ip4ToInt(item); 159 | if (value != null) { 160 | config["ips"].push([value, 1, action]); 161 | return; 162 | } 163 | } else if (item.length == 2) { 164 | var start = ip4ToInt(item[0]); 165 | var end = ip4ToInt(item[1]); 166 | var count = (start < end) ? (end - start) : item[1]; 167 | if ((start > 0) && (count > 0)) { 168 | config["ips"].push((action == 2) ? [start, count] : [start, count, action]); 169 | return; 170 | } 171 | } 172 | console.log("Found invalid ip of '" + key + "':", item); 173 | }); 174 | } 175 | 176 | function readDomainList(key, action) { 177 | config["domains"] = config["domains"] || {}; 178 | config[key].forEach(function (domain) { 179 | config["domains"][domain] = action; 180 | }); 181 | } 182 | 183 | config["ips"] = sortIpList(config["ips"]); 184 | config["ips"].forEach(function (item2, i, ips) { 185 | if (i > 0) { 186 | var item1 = ips[i - 1]; 187 | var value1 = item1[2] || 2; 188 | var value2 = item2[2] || 2; 189 | if ((item2[0] < item1[0] + item1[1])) { 190 | console.error("Collapsed ip: [%s - %s] : %d, [%s - %s] : %d", 191 | intToIP4(item1[0]), intToIP4(item1[0] + item1[1] - 1), value1, 192 | intToIP4(item2[0]), intToIP4(item2[0] + item2[1] - 1), value2); 193 | } 194 | if ((item2[0] == item1[0] + item1[1]) && (value1 == value2)) { 195 | console.warn("ip can be merge: [%s - %s] : %d, [%s - %s] : %d", 196 | intToIP4(item1[0]), intToIP4(item1[0] + item1[1] - 1), value1, 197 | intToIP4(item2[0]), intToIP4(item2[0] + item2[1] - 1), value2); 198 | } 199 | } 200 | if (options["dump-ip"]) { 201 | console.info("[%s - %s] : %d / count=%d", 202 | intToIP4(item2[0]), intToIP4(item2[0] + item2[1] - 1), item2[2] || 2, item2[1]); 203 | } 204 | }); 205 | 206 | config["proxies"] = [ 207 | null, // 0: UNKNOWN 208 | 'DIRECT', // 1: LOCAL (INTRANET) 209 | (config['internalProxy'] ? (config['internalProxy'] + '; ' + 'DIRECT') : 'DIRECT'), // 2: NORMAL (CHINA-NET) 210 | (config['proxy'] + '; ' + 'DIRECT'), // 3: GFWed (INTERNET) 211 | (config['proxy']) // 4: poisoned 212 | ]; 213 | 214 | var result = pacTemplate; 215 | for (key in config) { 216 | if (config.hasOwnProperty(key)) { 217 | result = result.replace("{/*{" + key + "}*/}", JSON.stringify(config[key])); 218 | result = result.replace("[/*[" + key + "]*/]", JSON.stringify(config[key])); 219 | result = result.replace("'{{" + key + "}}'", JSON.stringify(config[key])); 220 | } 221 | } 222 | return result; 223 | } 224 | 225 | 226 | function sortIpList(ips) { 227 | // item: [startIp (int), count (int), value (int)] 228 | while (true) { 229 | ips.sort(function (r1, r2) {return r1[0] - r2[0]}); 230 | var changed = false; 231 | var result = []; 232 | // detect collapsed and break into more ranges 233 | for (var i = 0; i < ips.length; i++) { 234 | var item1 = ips[i]; 235 | var item2 = ips[i + 1]; 236 | if (item2 && (item2[0] < item1[0] + item1[1])) { 237 | if (item1[0] == item2[0] && item1[1] < item2[1]) { 238 | var temp = item1; 239 | item1 = item2; 240 | item2 = temp; 241 | } 242 | // item1[0] <= item2[0] <= item2[0] + item2[1] <= item1[0] + item1[1] 243 | var r1 = [item1[0], item2[0] - item1[0]]; 244 | var r2 = item2; 245 | var r3 = [item2[0] + item2[1], item1[0] + item1[1] - item2[0] - item2[1]]; 246 | if (r1[1] >= 0 && r3[1] >= 0) { 247 | if (item1[2] != 2) { 248 | r1[2] = r3[2] = item1[2]; 249 | } 250 | if (r1[1] > 0) { 251 | result.push(r1); 252 | } 253 | result.push(r2); 254 | if (r3[1] > 0) { 255 | result.push(r3); 256 | } 257 | ++i; 258 | changed = true; 259 | continue; 260 | } 261 | } 262 | result.push(ips[i]); 263 | } 264 | 265 | if (changed) { 266 | ips = result; 267 | } else { 268 | return mergeNeighbors(ips); 269 | } 270 | } 271 | 272 | function mergeNeighbors(ips) { 273 | var result = []; 274 | for (var i = 0; i < ips.length; i++) { 275 | var item1 = ips[i]; 276 | var item2 = ips[i + 1]; 277 | var value = item1[2] || 2; 278 | while (item2 && (value == (item2[2] || 2)) && (item2[0] <= item1[0] + item1[1])) { 279 | item1[1] = Math.max(item1[1], item2[0] + item2[1] - item1[0]); 280 | ++i; 281 | item2 = ips[i + 1]; 282 | } 283 | result.push(item1); 284 | } 285 | return result; 286 | } 287 | } 288 | 289 | function fetchChnIpList(lineCallback, eofCallback) { 290 | var url = 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest'; 291 | var file = 'delegated-apnic-latest'; 292 | 293 | if (fs.existsSync(file)) { 294 | fs.readFile(file, {encoding : 'utf8'}, function (err, data) { 295 | if (err) { 296 | console.info("Read File " + file + " failed:", err); 297 | } else { 298 | getChunk(data); 299 | getChunk('\n'); 300 | eofCallback(true); 301 | } 302 | }); 303 | } else { 304 | // fetch data from apnic 305 | console.info("Fetching data from apnic.net, it might take a few minutes, please wait..."); 306 | var http = require('http'); 307 | http.get(url, function (res) { 308 | if (res.statusCode == 200) { 309 | res.setEncoding('utf8'); 310 | res.on('data', getChunk); 311 | res.on('end', function () { 312 | getChunk('\n'); 313 | eofCallback(true); 314 | }); 315 | res.on('error', function (e) { 316 | console.info("Fetching data from apnic.net failed:", e); 317 | eofCallback(false); 318 | }); 319 | } else { 320 | console.info("Fetching data from apnic.net failed:", res.statusCode); 321 | eofCallback(false); 322 | } 323 | }); 324 | } 325 | 326 | // apnic|CN|ipv4|111.119.64.0|16384|20090703|allocated 327 | var pattern = /^apnic\|cn\|ipv4\|([0-9\.]+)\|([0-9]+)\|([0-9]+)\|a.*$/gmi; 328 | 329 | var lastChunk = ""; 330 | 331 | function getChunk(chunk) { 332 | chunk = (lastChunk + chunk); 333 | var lastLF = chunk.lastIndexOf('\n'); 334 | if (lastLF == -1) { 335 | lastChunk = chunk; 336 | } else { 337 | lastChunk = chunk.substring(lastLF + 1); 338 | chunk = chunk.substring(0, lastLF); 339 | for (var arr; (arr = pattern.exec(chunk)) !== null;) { 340 | lineCallback(arr[1], arr[2], arr[3]); 341 | } 342 | } 343 | } 344 | } 345 | 346 | -------------------------------------------------------------------------------- /test/performanceTest.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /** 4 | * @type {exports} a wrapped fiber function wait to run performance test 5 | */ 6 | 7 | module.exports = performanceTest; 8 | 9 | function performanceTest() { 10 | return require('./Fiber').applyWith(runPerformanceTest, null, arguments); 11 | } 12 | 13 | // command line mode 14 | if (process.mainModule === module) { 15 | var filename = require('yargs')["argv"]._[0]; 16 | var repeat = require('yargs')["argv"]._[1]; 17 | 18 | // noinspection JSUnusedGlobalSymbols 19 | var FindProxyForURL = require("./pacTest")(filename, { 20 | // use a random dns resolver to avoid dns lookup 21 | dnsResolve : function () { 22 | function rnd() { 23 | // random to return 0 ~ 255 24 | return Math.floor(Math.random() * 256); 25 | } 26 | 27 | return rnd() + '.' + rnd() + '.' + rnd() + '.' + rnd(); 28 | }, 29 | 30 | // Dummy function for testing switchysharp pac. 31 | shExpMatch : function (test, exp) { 32 | // Any shExpMatch implementation could not be faster than this, 33 | // which results in overestimated switchysharp pac performance. 34 | return test == exp; 35 | } 36 | }); 37 | 38 | FindProxyForURL.filename = filename; 39 | // wrap the test in setTimeout to make leaving urls definition at the end of file possible 40 | setTimeout(function () { 41 | performanceTest(FindProxyForURL, repeat).run(); 42 | }, 0); 43 | } 44 | 45 | 46 | function runPerformanceTest(FindProxyForURL, repeat) { 47 | repeat = parseInt(repeat) || 100; 48 | 49 | console.log(' size: %d bytes', require("fs").statSync(FindProxyForURL.filename).size); 50 | var time = process.hrtime(); 51 | 52 | for (var j = 0; j < repeat; j++) { 53 | urls.forEach(function (url) { 54 | FindProxyForURL(url, url); 55 | }); 56 | } 57 | 58 | var diff = process.hrtime(time); 59 | console.log(' total: %d ms', (diff[0] * 1e3 + diff[1] * 1e-6)); 60 | console.log('average: %d ns', (diff[0] * 1e6 + diff[1] * 1e-3) / (repeat * urls.length)); 61 | } 62 | 63 | 64 | // noinspection SpellCheckingInspection 65 | var urls = [ 66 | 'plus.google.com', 67 | 'ssl.gstatic.com', 68 | 'www.google.com', 69 | 'id.google.com', 70 | 'clients1.google.com', 71 | 'api.twitter.com', 72 | 'lh3.googleusercontent.com', 73 | 'encrypted-tbn3.gstatic.com', 74 | 'encrypted-tbn2.gstatic.com', 75 | 'encrypted-tbn1.gstatic.com', 76 | 'encrypted-tbn2.gstatic.com', 77 | 'encrypted-tbn2.gstatic.com', 78 | 'encrypted-tbn2.gstatic.com', 79 | 'encrypted-tbn0.gstatic.com', 80 | 'encrypted-tbn0.gstatic.com', 81 | 'encrypted-tbn2.gstatic.com', 82 | 'encrypted-tbn0.gstatic.com', 83 | 'encrypted-tbn3.gstatic.com', 84 | 'encrypted-tbn3.gstatic.com', 85 | 'encrypted-tbn0.gstatic.com', 86 | 'encrypted-tbn1.gstatic.com', 87 | 'encrypted-tbn2.gstatic.com', 88 | 'encrypted-tbn1.gstatic.com', 89 | 'encrypted-tbn3.gstatic.com', 90 | 'encrypted-tbn0.gstatic.com', 91 | 'encrypted-tbn3.gstatic.com', 92 | 'www.taobao.com', 93 | 'www.taobao.com', 94 | 'www.taobao.com', 95 | 'www.taobao.com', 96 | 'g.tbcdn.com', 97 | 'g.tbcdn.com', 98 | 'g.tbcdn.com', 99 | 'gtms01.alicdn.com', 100 | 'gtms02.alicdn.com', 101 | 'gtms03.alicdn.com', 102 | 'gtms04.alicdn.com', 103 | 'msg.taobao.com', 104 | 'www.taobao.com', 105 | 'i.mmcdn.cn', 106 | 'img.taobaocdn.com', 107 | 'img.taobaocdn.com', 108 | 'img.taobaocdn.com', 109 | 'img.taobaocdn.com', 110 | 'img.taobaocdn.com', 111 | 'img.taobaocdn.com', 112 | 'img.taobaocdn.com', 113 | 'img.taobaocdn.com', 114 | 'img02.taobaocdn.com', 115 | 'img02.taobaocdn.com', 116 | 'img02.taobaocdn.com', 117 | 'img02.taobaocdn.com', 118 | 'img03.taobaocdn.com', 119 | 'img04.taobaocdn.com', 120 | 'img04.taobaocdn.com', 121 | 'www.baidu.com', 122 | 's1.bdstatic.com', 123 | 's1.bdstatic.com', 124 | 's1.bdstatic.com', 125 | 's1.bdstatic.com', 126 | 's1.bdstatic.com', 127 | 's1.bdstatic.com', 128 | 'passport.baidu.com', 129 | 's1.bdstatic.com', 130 | 's1.bdstatic.com', 131 | 's1.bdstatic.com', 132 | 's1.bdstatic.com', 133 | 'suggestion.baidu.com', 134 | 'clients1.google.com', 135 | 'clients1.google.com', 136 | 'clients1.google.com', 137 | 'clients1.google.com', 138 | 'clients1.google.com', 139 | 'clients1.google.com', 140 | 'apis.google.com', 141 | 'id.google.com', 142 | 'ssl.gstatic.com', 143 | 'www.gstatic.com', 144 | 'clients1.google.com', 145 | 'clients4.google.com', 146 | 'www.google.com', 147 | 't3.gstatic.com', 148 | 'calendar.google.com', 149 | 'calendar.google.com', 150 | 'calendar.google.com', 151 | 'calendar.google.com', 152 | 'calendar.google.com', 153 | 'calendar.google.com', 154 | 'twitter.com', 155 | 'docs.google.com', 156 | 'api.twitter.com', 157 | 'api.twitter.com', 158 | 'api.twitter.com', 159 | 'api.twitter.com', 160 | 'api.twitter.com', 161 | 'api.twitter.com', 162 | 'api.twitter.com', 163 | 'clients1.google.com', 164 | 'twitter.com', 165 | 'pbs.twimg.com', 166 | 'twitter.com', 167 | 'accounts.google.com', 168 | 'clients2.google.com', 169 | '0.client-channel.google.com', 170 | 'safebrowsing.google.com', 171 | 'safebrowsing-cache.google.com', 172 | 'client24.dropbox.com', 173 | 'ssl.gstatic.com', 174 | 'www.weibo.com', 175 | 'www.weibo.com', 176 | 's.tbcdn.cn', 177 | 's.tbcdn.cn', 178 | 's.tbcdn.cn', 179 | 's.tbcdn.cn', 180 | 's.tbcdn.cn', 181 | 's.tbcdn.cn', 182 | 's.tbcdn.cn', 183 | 's.tbcdn.cn', 184 | 's.tbcdn.cn', 185 | 's.tbcdn.cn', 186 | 's.tbcdn.cn', 187 | 's.tbcdn.cn', 188 | 's.tbcdn.cn', 189 | 's.tbcdn.cn', 190 | 's.tbcdn.cn', 191 | 's.tbcdn.cn', 192 | 's.tbcdn.cn', 193 | 's.tbcdn.cn', 194 | 's.tbcdn.cn', 195 | 's.tbcdn.cn', 196 | 's.tbcdn.cn', 197 | 's.tbcdn.cn', 198 | 's.tbcdn.cn', 199 | 's.tbcdn.cn', 200 | 's.tbcdn.cn', 201 | 's.tbcdn.cn', 202 | 's.tbcdn.cn', 203 | '0.docs.google.com', 204 | '0.talkgadget.google.com', 205 | '0.docs.google.com', 206 | '0.talkgadget.google.com', 207 | '0.talkgadget.google.com', 208 | '0.docs.google.com', 209 | '0.talkgadget.google.com', 210 | '0.docs.google.com', 211 | 'api.twitter.com', 212 | 'twitter.com', 213 | 'api.twitter.com', 214 | 'api.twitter.com', 215 | 'api.twitter.com', 216 | 'api.twitter.com', 217 | 'api.twitter.com', 218 | 'www.google.com', 219 | 'graph.facebook.com', 220 | 'www.google.com', 221 | 'www.google.com', 222 | 'www.google.com', 223 | 'notify1.dropbox.com', 224 | 'pbs.twimg.com', 225 | 'twitter.com', 226 | 'api.twitter.com', 227 | 'api.twitter.com', 228 | 'api.twitter.com', 229 | 'api.twitter.com', 230 | 'api.twitter.com', 231 | 'api.twitter.com', 232 | 'pbs.twimg.com', 233 | 'pbs.twimg.com', 234 | 'pbs.twimg.com', 235 | 'twitter.com', 236 | 'pbs.twimg.com', 237 | 'twitter.com', 238 | 'api.twitter.com', 239 | 'api.twitter.com', 240 | 'api.twitter.com', 241 | 'api.twitter.com', 242 | 'api.twitter.com', 243 | 'api.twitter.com', 244 | 'api.twitter.com', 245 | 'pbs.twimg.com', 246 | 'pbs.twimg.com', 247 | 't.co', 248 | 's.tbcdn.cn', 249 | 's.tbcdn.cn', 250 | 's.tbcdn.cn', 251 | 's.tbcdn.cn', 252 | 's.tbcdn.cn', 253 | 's.tbcdn.cn', 254 | 's.tbcdn.cn', 255 | 's.tbcdn.cn', 256 | 'twitter.com', 257 | 'twitter.com', 258 | 'twitter.com', 259 | 'pbs.twimg.com', 260 | 'api.twitter.com', 261 | 'api.twitter.com', 262 | 'api.twitter.com', 263 | 'api.twitter.com', 264 | 'api.twitter.com', 265 | 'api.twitter.com', 266 | 'twitter.com', 267 | 'proxy.googlezip.net', 268 | 'clients4.google.com', 269 | 'clients6.google.com', 270 | 'talkgadget.google.com', 271 | 'plus.google.com', 272 | 'www.blogger.com', 273 | 'www.blogger.com', 274 | 'www.blogger.com', 275 | 'www.blogger.com', 276 | 'apis.google.com', 277 | 'lh3.googleusercontent.com', 278 | 'apis.google.com', 279 | 'apis.google.com', 280 | 'apis.google.com', 281 | 'program-think.blogspot.com', 282 | '2.bp.blogspot.com', 283 | 'program-think.blogspot.com', 284 | '1.bp.blogspot.com', 285 | 'program-think.blogspot.com', 286 | 'www.google-analytics.com', 287 | 'twitter.com', 288 | 'www.youku.com', 289 | 'www.youku.com', 290 | 'html.atm.youku.com', 291 | 'html.atm.youku.com', 292 | 'html.atm.youku.com', 293 | 'html.atm.youku.com', 294 | 'www.youku.com', 295 | 'html.atm.youku.com', 296 | 'html.atm.youku.com', 297 | 'www.youku.com', 298 | 'www.youku.com', 299 | 'www.youku.com', 300 | 'r4.yiimg.com', 301 | 'www.youku.com', 302 | 'r2.yiimg.com', 303 | 'www.youku.com', 304 | 'r3.yiimg.com', 305 | 'www.youku.com', 306 | 'r3.yiimg.com', 307 | 'html.atm.youku.com', 308 | 'www.youku.com', 309 | 'r2.yiimg.com', 310 | 'www.youku.com', 311 | 'static.atm.youku.com', 312 | 'static.atm.youku.com', 313 | 'static.atm.youku.com', 314 | 'static.atm.youku.com', 315 | 'static.atm.youku.com', 316 | 'static.atm.youku.com', 317 | 'static.atm.youku.com', 318 | 'r4.yiimg.com', 319 | 'lh6.googleusercontent.com', 320 | 'accounts.google.com', 321 | 'lh4.googleusercontent.com', 322 | 'oauth.googleusercontent.com', 323 | 'csi.gstatic.com', 324 | 'api.twitter.com', 325 | 'api.twitter.com', 326 | 'api.twitter.com', 327 | 'api.twitter.com', 328 | 'api.twitter.com', 329 | 'api.twitter.com', 330 | 't.co', 331 | 'twitter.com', 332 | 'github-camo.global.ssl.fastly.net', 333 | 'clients1.google.com', 334 | 'pbs.twimg.com', 335 | 'api.twitter.com', 336 | 'api.twitter.com', 337 | 'api.twitter.com', 338 | 'api.twitter.com', 339 | 'api.twitter.com', 340 | 'api.twitter.com', 341 | 'suggestqueries.google.com', 342 | 'suggestqueries.google.com', 343 | 'suggestqueries.google.com', 344 | 'suggestqueries.google.com', 345 | 'www.google.com', 346 | 'www.google.com', 347 | 'id.google.com', 348 | 'plus.google.com', 349 | 'clients4.google.com', 350 | 'pbs.twimg.com', 351 | 'twitter.com', 352 | 'api.twitter.com', 353 | 'api.twitter.com', 354 | 'api.twitter.com', 355 | 'api.twitter.com', 356 | 'api.twitter.com', 357 | 'api.twitter.com', 358 | 'twitter.com', 359 | 'api.twitter.com', 360 | 'api.twitter.com', 361 | 'api.twitter.com', 362 | 'api.twitter.com', 363 | 'twitter.com', 364 | 'api.twitter.com', 365 | 'api.twitter.com', 366 | 'api.twitter.com', 367 | 'api.twitter.com', 368 | 'accounts.google.com', 369 | 'talk.google.com', 370 | 'notify1.dropbox.com', 371 | 'notify1.dropbox.com', 372 | 'calendar.google.com', 373 | 'calendar.google.com', 374 | 'www.google.com', 375 | 'www.google.com', 376 | 'www.google.com', 377 | 'www.google.com', 378 | 'twitter.com', 379 | 'clients4.google.com', 380 | 'init.itunes.apple.com', 381 | 'upp.itunes.apple.com', 382 | 'suggestqueries.google.com', 383 | 'suggestqueries.google.com', 384 | 'suggestqueries.google.com', 385 | 'api.twitter.com', 386 | 'api.twitter.com', 387 | 'api.twitter.com', 388 | 'api.twitter.com', 389 | 'api.twitter.com', 390 | 'api.twitter.com', 391 | 'd.dropbox.com', 392 | 'notify1.dropbox.com', 393 | 'calendar.google.com', 394 | 'www.google.com', 395 | 'calendar.google.com', 396 | 'www.google.com', 397 | 'calendar.google.com', 398 | 'talk.google.com', 399 | 'www.google.com', 400 | 'google.com', 401 | 'google.com', 402 | 'google.com', 403 | 'google.com', 404 | 'google.com', 405 | 'google.com', 406 | 'userstream.twitter.com', 407 | 'api.twitter.com', 408 | 'api.twitter.com', 409 | 'api.twitter.com', 410 | 'api.twitter.com', 411 | 'userstream.twitter.com', 412 | 'userstream.twitter.com', 413 | 'mobile.twitter.com', 414 | 'mobile.twitter.com', 415 | 'mobile.twitter.com', 416 | 'mobile.twitter.com', 417 | 'mobile.twitter.com', 418 | 'mobile.twitter.com', 419 | 'pbs.twimg.com', 420 | 'pbs.twimg.com', 421 | 'pbs.twimg.com', 422 | 'pbs.twimg.com', 423 | 'pbs.twimg.com', 424 | 'mobile.twitter.com', 425 | 'www.gstatic.com', 426 | 'csi.gstatic.com', 427 | 'notify1.dropbox.com', 428 | 'calendar.google.com', 429 | 'www.google.com', 430 | 'calendar.google.com', 431 | 'talk.google.com', 432 | 'www.google.com', 433 | 'accounts.google.com', 434 | 'www.google.com', 435 | 'google.com', 436 | 'calendar.google.com', 437 | 'google.com', 438 | 'google.com', 439 | 'google.com', 440 | 'google.com', 441 | 'google.com', 442 | 'talk.google.com', 443 | 'userstream.twitter.com', 444 | 'api.twitter.com', 445 | 'api.twitter.com', 446 | 'api.twitter.com', 447 | 'api.twitter.com', 448 | 'api.twitter.com', 449 | 'userstream.twitter.com', 450 | 'userstream.twitter.com', 451 | 'api.twitter.com', 452 | 'init.itunes.apple.com', 453 | 'su.itunes.apple.com', 454 | 'p35-buy.itunes.apple.com', 455 | 'www.google.com', 456 | 'www.google.com', 457 | 'www.google.com', 458 | 'www.google.com', 459 | 'www.google.com', 460 | 'www.google.com', 461 | 'www.google.com', 462 | 'd.dropbox.com', 463 | 'api.twitter.com', 464 | 'api.twitter.com', 465 | 'api.twitter.com', 466 | 'api.twitter.com', 467 | 'api.twitter.com', 468 | 'api.twitter.com', 469 | 'api.twitter.com', 470 | 'api.twitter.com', 471 | 'api.twitter.com', 472 | 'api.twitter.com', 473 | 'api.twitter.com', 474 | 'api.twitter.com', 475 | 'api.twitter.com', 476 | 'api.twitter.com', 477 | 'api.twitter.com', 478 | 'api.twitter.com', 479 | 'api.twitter.com', 480 | 'api.twitter.com', 481 | 'api.twitter.com', 482 | 'api.twitter.com', 483 | 'api.twitter.com', 484 | 'api.twitter.com', 485 | 'api.twitter.com', 486 | 'api.twitter.com', 487 | 'talk.google.com', 488 | 'api.twitter.com', 489 | 'api.twitter.com', 490 | 'api.twitter.com', 491 | 'api.twitter.com', 492 | 'api.twitter.com', 493 | 'api.twitter.com', 494 | 'api.twitter.com', 495 | 'api.twitter.com', 496 | 'api.twitter.com', 497 | 'api.twitter.com', 498 | 'api.twitter.com', 499 | 'api.twitter.com', 500 | 'www.google.com', 501 | 'www.google.com', 502 | 'www.google.com', 503 | 'www.google.com', 504 | 'api.twitter.com', 505 | 'api.twitter.com', 506 | 'api.twitter.com', 507 | 'api.twitter.com', 508 | 'api.twitter.com', 509 | 'api.twitter.com', 510 | 'clients2.google.com', 511 | 'client45.dropbox.com', 512 | 'www.google.com', 513 | 'www.google.com', 514 | 'www.google.com', 515 | 'www.google.com', 516 | 'www.google.com', 517 | 'www.google.com', 518 | 'www.google.com', 519 | 'api.twitter.com', 520 | 'api.twitter.com', 521 | 'api.twitter.com', 522 | 'api.twitter.com', 523 | 'api.twitter.com', 524 | 'api.twitter.com', 525 | 'api.twitter.com', 526 | 'api.twitter.com', 527 | 'api.twitter.com', 528 | 'api.twitter.com', 529 | 'api.twitter.com', 530 | 'api.twitter.com', 531 | 'talkx.l.google.com', 532 | 'userstream.twitter.com', 533 | 'api.twitter.com', 534 | 'api.twitter.com', 535 | 'api.twitter.com', 536 | 'api.twitter.com', 537 | 'api.twitter.com', 538 | 'www.google.com', 539 | 'www.google.com', 540 | 'www.google.com', 541 | 'www.google.com', 542 | 'www.google.com', 543 | 'www.google.com', 544 | 'www.google.com', 545 | 'ssl.gstatic.com', 546 | 'clients6.google.com', 547 | 'ssl.gstatic.com', 548 | 'ssl.gstatic.com', 549 | 'ssl.gstatic.com', 550 | 'ssl.gstatic.com', 551 | '0.docs.google.com', 552 | 'docs.google.com', 553 | '0.docs.google.com', 554 | 'ssl.gstatic.com', 555 | '0.drive.google.com', 556 | '0.talkgadget.google.com', 557 | '0.talkgadget.google.com', 558 | 'talkgadget.google.com', 559 | 'talk.google.com', 560 | 'accounts.google.com', 561 | 'mail.google.com', 562 | 'chatenabled.mail.google.com', 563 | 'csi.gstatic.com', 564 | 'clients4.google.com', 565 | 'talk.google.com', 566 | 'gg.google.com', 567 | 'apis.google.com', 568 | 'plus.google.com', 569 | 'userstream.twitter.com', 570 | 'lh4.googleusercontent.com', 571 | 'lh6.googleusercontent.com', 572 | 'lh3.googleusercontent.com', 573 | 'lh4.googleusercontent.com', 574 | 'lh5.googleusercontent.com', 575 | 'lh4.googleusercontent.com', 576 | 'www.google.com', 577 | 'www.google.com', 578 | 'www.google.com', 579 | 'www.google.com', 580 | 't3.gstatic.com', 581 | 't3.gstatic.com', 582 | 't3.gstatic.com', 583 | 'www.google.com', 584 | 'www.google.com', 585 | 'www.google.com', 586 | 'www.google.com', 587 | 'docs.google.com', 588 | 'www.google.com', 589 | 'www.google.com', 590 | 'www.google.com', 591 | 'ssl.gstatic.com', 592 | 'talk.google.com', 593 | 'ssl.gstatic.com', 594 | 'docs.google.com', 595 | 'ssl.gstatic.com', 596 | 'clients4.google.com', 597 | 'ssl.gstatic.com', 598 | 'www.google.com', 599 | 'www.google.com', 600 | 'www.google.com', 601 | 'www.google.com', 602 | 'www.google.com', 603 | 'www.google.com', 604 | 'www.google.com', 605 | 'clients4.google.com', 606 | 'safebrowsing.google.com', 607 | 'ssl.gstatic.com', 608 | 'www.google.com', 609 | 'docs.google.com', 610 | 'clients4.google.com', 611 | 'ssl.gstatic.com', 612 | 'd.dropbox.com', 613 | 'userstream.twitter.com', 614 | 'notify1.dropbox.com', 615 | 'api.twitter.com', 616 | 'api.twitter.com', 617 | 'api.twitter.com', 618 | 'api.twitter.com', 619 | 'api.twitter.com', 620 | 'api.twitter.com', 621 | 'userstream.twitter.com', 622 | 'talk.google.com', 623 | 'calendar.google.com', 624 | 'www.google.com', 625 | 'calendar.google.com', 626 | 'www.google.com', 627 | 'accounts.google.com', 628 | 'calendar.google.com', 629 | 'www.google.com', 630 | 'google.com', 631 | 'google.com', 632 | 'google.com', 633 | 'google.com', 634 | 'google.com', 635 | 'google.com', 636 | 'talk.google.com', 637 | 'pbs.twimg.com', 638 | 'twitter.com', 639 | 'pbs.twimg.com', 640 | 'pbs.twimg.com', 641 | 'pbs.twimg.com', 642 | 'talkx.l.google.com', 643 | 'api.twitter.com', 644 | 'twitter.com', 645 | 'api.twitter.com', 646 | 'api.twitter.com', 647 | 'api.twitter.com', 648 | 'api.twitter.com', 649 | 'api.twitter.com', 650 | 'chart.apis.google.com', 651 | 'clients4.google.com', 652 | 'userstream.twitter.com', 653 | 'suggestqueries.google.com', 654 | 'suggestqueries.google.com', 655 | 'plus.google.com', 656 | 'lh3.googleusercontent.com', 657 | 'lh3.googleusercontent.com', 658 | 'lh3.googleusercontent.com', 659 | 'talkgadget.google.com', 660 | 'talkgadget.google.com', 661 | 'apis.google.com', 662 | 'oauth.googleusercontent.com', 663 | 'clients6.google.com', 664 | 'clients6.google.com', 665 | 'clients6.google.com', 666 | 'clients6.google.com', 667 | 'clients6.google.com', 668 | 'clients6.google.com', 669 | 'clients1.google.com', 670 | 'encrypted-tbn0.gstatic.com', 671 | 'encrypted-tbn2.gstatic.com', 672 | 'id.google.com', 673 | 'encrypted-tbn3.gstatic.com', 674 | 'www.gstatic.com', 675 | 'lh4.googleusercontent.com', 676 | 'lh4.googleusercontent.com', 677 | 'lh4.googleusercontent.com', 678 | 'lh4.googleusercontent.com', 679 | 'lh5.googleusercontent.com', 680 | 'ssl.gstatic.com', 681 | 'csi.gstatic.com', 682 | 'clients4.google.com', 683 | 'encrypted-tbn1.gstatic.com', 684 | 'lh4.googleusercontent.com', 685 | 'lh4.googleusercontent.com', 686 | 'www.google.com', 687 | 'twitter.com', 688 | 'clients1.google.com', 689 | 'encrypted-tbn0.gstatic.com', 690 | 'encrypted-tbn1.gstatic.com', 691 | 'encrypted-tbn2.gstatic.com', 692 | 'encrypted-tbn3.gstatic.com', 693 | 'www.gstatic.com', 694 | 'id.google.com', 695 | 'beacon.sina.com.cn', 696 | 'plus.google.com', 697 | 'plus.google.com', 698 | 'd.dropbox.com', 699 | 'www.v2ex.com', 700 | 'cdn.v2ex.com', 701 | 'ssl.google-analytics.com', 702 | 'api.twitter.com', 703 | 'twitter.com', 704 | 'api.twitter.com', 705 | 'api.twitter.com', 706 | 'api.twitter.com', 707 | 'twitter.com', 708 | 'api.twitter.com', 709 | 'api.twitter.com', 710 | 'api.twitter.com', 711 | 'pbs.twimg.com', 712 | 'pbs.twimg.com', 713 | 'ssl.gstatic.com', 714 | 'www.v2ex.com', 715 | 'cdn.v2ex.com', 716 | 'cdn.v2ex.com', 717 | '9429127371.a.uxengine.net', 718 | '9429127371.a.uxengine.net', 719 | '9429127371.a.uxengine.net', 720 | '9429127371.a.uxengine.net', 721 | 'cdn.v2ex.com', 722 | 'cdn.v2ex.com', 723 | 'suggestqueries.google.com', 724 | 'suggestqueries.google.com', 725 | 'suggestqueries.google.com', 726 | 'clients4.google.com', 727 | 'twitter.com', 728 | 'suggestqueries.google.com', 729 | 'suggestqueries.google.com', 730 | 'github.com', 731 | 'avatars3.githubusercontent.com', 732 | 'raw.github.com', 733 | 'github-camo.global.ssl.fastly.net', 734 | 'raw.github.com', 735 | 'collector.githubapp.com', 736 | 'suggestqueries.google.com', 737 | 'suggestqueries.google.com', 738 | 'nodejs.org', 739 | 'nodejs.org', 740 | 'nodejs.org', 741 | 'nodejs.org', 742 | 'nodejs.org', 743 | 'nodejs.org', 744 | 'www.google-analytics.com', 745 | 'clients2.google.com', 746 | 'lh3.googleusercontent.com', 747 | 'www.gstatic.com', 748 | 'accounts.google.com', 749 | 'mail.google.com', 750 | 'mail-attachment.googleusercontent.com', 751 | 'clients2.google.com', 752 | 'plus.google.com', 753 | 'www.google.com', 754 | 'plus.google.com', 755 | 'oauth.googleusercontent.com', 756 | 'accounts.google.com', 757 | 'www.gstatic.com']; 758 | 759 | -------------------------------------------------------------------------------- /test/flora.pac: -------------------------------------------------------------------------------- 1 | // Generated by FloraPacNJS: https://github.com/lwr/FloraPacNJS 2 | 3 | var proxies = [null,"DIRECT","DIRECT","SOCKS5 127.0.0.1:7070; SOCKS 127.0.0.1:7070; DIRECT","SOCKS5 127.0.0.1:7070; SOCKS 127.0.0.1:7070"]; 4 | var domains = {"cn":2,"baidu.com":2,"v2ex.com":2,"10010.com":2,"115.com":2,"123u.com":2,"126.com":2,"126.net":2,"163.com":2,"17173.com":2,"178.com":2,"17cdn.com":2,"21cn.com":2,"2288.org":2,"3322.org":2,"360buy.com":2,"360buyimg.com":2,"360doc.com":2,"360safe.com":2,"36kr.com":2,"400gb.com":2,"4399.com":2,"51.la":2,"51buy.com":2,"51cto.com":2,"51job.com":2,"51jobcdn.com":2,"5d6d.com":2,"5d6d.net":2,"61.com":2,"6600.org":2,"6rooms.com":2,"7766.org":2,"7k7k.com":2,"8800.org":2,"8866.org":2,"90g.org":2,"91.com":2,"9966.org":2,"acfun.tv":2,"aicdn.com":2,"ali213.net":2,"alibaba.com":2,"alicdn.com":2,"aliexpress.com":2,"aliimg.com":2,"alikunlun.com":2,"alimama.com":2,"alipay.com":2,"alipayobjects.com":2,"alisoft.com":2,"aliyun.com":2,"aliyuncdn.com":2,"aliyuncs.com":2,"anzhi.com":2,"appinn.com":2,"apple.com":2,"appsina.com":2,"archlinuxcn.org":2,"atpanel.com":2,"baidupcs.com":2,"baidustatic.com":2,"baifendian.com":2,"baihe.com":2,"baixing.com":2,"bdimg.com":2,"bdstatic.com":2,"bilibili.tv":2,"blogbus.com":2,"blueidea.com":2,"ccb.com":2,"cctv.com":2,"cctvpic.com":2,"cdn20.com":2,"china.com":2,"chinabyte.com":2,"chinacache.com":2,"chinacache.net":2,"chinamobile.com":2,"chinanews.com":2,"chinaren.com":2,"chinaunix.net":2,"chinaz.com":2,"cloudcdn.net":2,"cn.bing.com":2,"cn.debian.org":2,"cnbeta.com":2,"cnbetacdn.com":2,"cnblogs.com":2,"cnepub.com":2,"cnzz.com":2,"comsenz.com":2,"csdn.net":2,"ct10000.com":2,"ctdisk.com":2,"dangdang.com":2,"dbank.com":2,"dedecms.com":2,"diandian.com":2,"dianping.com":2,"discuz.com":2,"discuz.net":2,"dl.google.com":2,"docin.com":2,"donews.com":2,"dospy.com":2,"douban.com":2,"douban.fm":2,"duapp.com":2,"duba.net":2,"duomi.com":2,"duote.com":2,"duowan.com":2,"egou.com":2,"et8.org":2,"etao.com":2,"f3322.org":2,"fantong.com":2,"fenzhi.com":2,"fhldns.com":2,"ganji.com":2,"gaopeng.com":2,"geekpark.net":2,"gfan.com":2,"gtimg.com":2,"hacdn.net":2,"hadns.net":2,"hao123.com":2,"hao123img.com":2,"hc360.com":2,"hdslb.com":2,"hexun.com":2,"hiapk.com":2,"hichina.com":2,"hoopchina.com":2,"huanqiu.com":2,"hudong.com":2,"huochepiao.com":2,"hupu.com":2,"iask.com":2,"iciba.com":2,"idqqimg.com":2,"ifanr.com":2,"ifeng.com":2,"ifengimg.com":2,"ijinshan.com":2,"iqiyi.com":2,"it168.com":2,"itcpn.net":2,"iteye.com":2,"itouzi.com":2,"jandan.net":2,"jd.com":2,"jiashule.com":2,"jiasule.com":2,"jiathis.com":2,"jiayuan.com":2,"jiepang.com":2,"jing.fm":2,"jobbole.com":2,"jstv.com":2,"jumei.com":2,"kaixin001.com":2,"kandian.com":2,"kandian.net":2,"kanimg.com":2,"kankanews.com":2,"kdnet.net":2,"koudai8.com":2,"ku6.com":2,"ku6cdn.com":2,"ku6img.com":2,"kuaidi100.com":2,"kugou.com":2,"lashou.com":2,"letao.com":2,"letv.com":2,"lietou.com":2,"linezing.com":2,"loli.mg":2,"loli.vg":2,"lvping.com":2,"lxdns.com":2,"mangocity.com":2,"mapbar.com":2,"mcbbs.net":2,"mediav.com":2,"meilishuo.com":2,"meituan.com":2,"meituan.net":2,"meizu.com":2,"microsoft.com":2,"miui.com":2,"moe123.com":2,"moegirl.org":2,"mop.com":2,"mtime.com":2,"my-card.in":2,"mydrivers.com":2,"mzstatic.com":2,"netease.com":2,"newsmth.net":2,"ngacn.cc":2,"nuomi.com":2,"okbuy.com":2,"optaim.com":2,"oschina.net":2,"paipai.com":2,"pcbeta.com":2,"pchome.net":2,"pcpop.com":2,"pengyou.com":2,"phoenixlzx.com":2,"phpwind.net":2,"pingan.com":2,"pool.ntp.org":2,"pplive.com":2,"pps.tv":2,"ppstream.com":2,"pptv.com":2,"pubyun.com":2,"qhimg.com":2,"qianlong.com":2,"qidian.com":2,"qingdaonews.com":2,"qiniu.com":2,"qiniudn.com":2,"qiushibaike.com":2,"qiyi.com":2,"qiyipic.com":2,"qq.com":2,"qqmail.com":2,"qstatic.com":2,"qunar.com":2,"qunarzz.com":2,"qvbuy.com":2,"renren.com":2,"renrendai.com":2,"rrfmn.com":2,"rrimg.com":2,"sanguosha.com":2,"sdo.com":2,"sina.com":2,"sinaapp.com":2,"sinaedge.com":2,"sinaimg.com":2,"sinajs.com":2,"skycn.com":2,"smzdm.com":2,"sogou.com":2,"sohu.com":2,"soku.com":2,"solidot.org":2,"soso.com":2,"soufun.com":2,"soufunimg.com":2,"staticfile.org":2,"staticsdo.com":2,"steamcn.com":2,"suning.com":2,"szzfgjj.com":2,"tanx.com":2,"taobao.com":2,"taobaocdn.com":2,"tbcache.com":2,"tdimg.com":2,"tencent.com":2,"tenpay.com":2,"tgbus.com":2,"thawte.com":2,"tiancity.com":2,"tianyaui.com":2,"tiexue.net":2,"tmall.com":2,"tmcdn.net":2,"tom.com":2,"tomonline-inc.com":2,"tuan800.com":2,"tuan800.net":2,"tuanimg.com":2,"tudou.com":2,"tudouui.com":2,"tuniu.com":2,"u148.net":2,"u17.com":2,"ubuntu.com":2,"ucjoy.com":2,"uni-marketers.com":2,"unionpay.com":2,"unionpaysecure.com":2,"upaiyun.com":2,"upyun.com":2,"uusee.com":2,"uuu9.com":2,"vaikan.com":2,"vancl.com":2,"vcimg.com":2,"verycd.com":2,"wandoujia.com":2,"wdjimg.com":2,"weibo.com":2,"weiphone.com":2,"weiyun.com":2,"west263.com":2,"wrating.com":2,"wscdns.com":2,"wumii.com":2,"xdcdn.net":2,"xiachufang.com":2,"xiami.com":2,"xiami.net":2,"xiaomi.com":2,"xiaonei.com":2,"xiazaiba.com":2,"xici.net":2,"xilu.com":2,"xinhuanet.com":2,"xinnet.com":2,"xlpan.com":2,"xn--fiqs8s":2,"xnpic.com":2,"xungou.com":2,"xunlei.com":2,"ydstatic.com":2,"yesky.com":2,"yeyou.com":2,"yihaodian.com":2,"yihaodianimg.com":2,"yingjiesheng.com":2,"yintai.com":2,"yinyuetai.com":2,"yiqifa.com":2,"yixun.com":2,"ykimg.com":2,"ynet.com":2,"youdao.com":2,"yougou.com":2,"youku.com":2,"yupoo.com":2,"yy.com":2,"yyets.com":2,"zbjimg.com":2,"zhaopin.com":2,"zhi.hu":2,"zhihu.com":2,"zhimg.com":2,"zhubajie.com":2,"zongheng.com":2,"google.com":3,"twitter.com":3,"facebook.com":3,"youtube.com":3}; 5 | var ips = [[16777472,768],[16779264,2048],[16785408,8192],[16842752,256],[16843264,15872],[16908288,768],[16909312,31744],[16973824,65536],[17039616,32512],[17301504,65536],[17432576,2560],[17435392,29952],[17563648,262144],[18350080,524288],[19726336,65536],[19922944,262144],[20447232,524288],[21233664,262144],[22020096,1048576],[24379392,262144],[28573696,393216],[29097984,786432],[30015488,393216],[69485234,1,4],[134727213,1,4],[167772160,16777216,1],[234881024,2048],[234884096,1024],[234946560,1024],[235929600,1048576],[241598464,1024],[241605632,1024],[241631232,1638400],[243400704,131072],[243662848,131072],[244318208,1048576],[247479296,1024],[247483392,1024],[247726080,131072],[248250368,131072],[248512512,1048576],[453509120,1572864],[455272448,2048],[455344128,786432],[456271872,2048],[456294400,32768],[456542208,2048],[456562688,2048],[456572928,16384],[459460608,12288],[459505664,32768],[459735040,65536],[459964416,16384],[459983872,1024],[460136448,8192],[460324864,16384],[460345344,4096],[460423168,16384],[460521472,32768],[460598272,1024],[460933120,2048],[460945408,2048],[461373440,131072],[461626368,1024],[462422016,65536],[462684160,786432],[465043456,2883584],[603979776,1024],[603981824,129024],[604241920,262144],[605028352,1384448],[606413824,512],[606414592,6400],[606601216,655360],[607322112,65536],[607649792,524288],[610271232,8388608],[620232704,262144],[620625920,65536],[624768670,1,4],[654311424,256],[654311936,65024],[658505728,2097152],[662700032,4194304],[704643072,1024],[704645120,5120],[704651264,8192],[704675840,48128],[704741376,32768],[704905216,262144],[707788800,786432],[708706304,45056],[708752384,3072],[708771840,65536],[709885952,131072],[710098944,5120],[710105088,829440],[710950912,10240],[710962176,103424],[711131136,29696],[711161856,2048],[711196672,262144],[712507392,204800],[712713216,56320],[713031680,1048576],[714866688,8192],[714875904,2054144],[716931072,32768],[717225984,524288],[717815808,32768],[717881344,2555904],[720502784,917504],[736886784,209920],[737148928,1024],[737161216,1024],[737163264,2048],[737166336,3072],[737170432,1024],[737180672,4096],[737188864,17408],[737209344,11264],[737226752,1024],[737233920,5120],[737243136,1024],[737257472,5120],[737264640,1024],[737267712,9216],[737277952,2048],[737282048,7168],[737291264,6144],[737298432,7168],[737316864,7168],[737326080,1024],[737328128,3072],[737332224,1024],[737335296,2048],[737344512,1024],[737346560,4096],[737351680,1024],[737368064,1024],[737378304,1024],[737380352,1024],[737382400,2048],[737385472,1024],[737388544,1024],[737542144,25600],[737608704,2048],[737618944,2048],[737625088,1024],[737627136,1024],[737629184,5120],[737635328,2048],[737645568,2048],[737652736,4096],[737657856,15360],[737945600,1024],[737947648,1024],[737949696,1024],[737992704,1024],[738066432,3072],[738072576,1024],[738075648,1024],[738077696,1024],[738079744,1024],[738082816,1024],[738084864,1024],[738087936,3072],[738092032,2048],[738095104,2048],[738099200,1024],[738101248,6144],[738109440,2048],[738112512,6144],[738119680,1024],[738122752,6144],[738129920,5120],[738136064,1024],[738144256,1024],[738147328,5120],[738153472,1024],[738156544,1024],[738159616,1024],[738168832,1024],[738174976,1024],[738177024,1024],[738179072,1024],[738181120,1024],[738183168,4096],[738189312,3072],[738194432,1024],[759197696,512],[777170500,1,4],[822345728,262144],[825425920,327680],[826277888,2097152],[829423616,786432],[830472192,256],[830472704,512],[831258624,131072],[832045056,262144],[835715072,262144],[836501504,262144],[837287936,262144],[837746688,16384],[837795840,16384],[838262784,8192],[920518656,131072],[973996032,786432],[975044608,2228224],[977397760,2048],[977403904,131072],[977567744,32768],[978452480,32768],[978518016,65536],[978796544,16384],[979599360,163840],[980680704,262144],[981467136,524288],[982515712,65536],[983171072,131072],[985661440,2097152],[988807168,1048576],[991429549,1,4],[991952896,3407872],[996868096,327680],[999751680,32768],[1000013824,65536],[1001127936,262144],[1002373120,32768],[1002434560,6295552],[1010237440,65536],[1010761728,65536],[1017118720,2097152],[1019346944,131072],[1019740160,1572864],[1021837312,131072],[1022033920,65536],[1022722048,32768],[1022820352,65536],[1023148032,65536],[1023246336,32768],[1023344640,65536],[1023692800,4096],[1023717376,4096],[1023975424,4096],[1025245184,32768],[1025343488,32768],[1026392064,16384],[1026416640,4096],[1026523136,16384],[1026555904,524288],[1029160960,16384],[1031798784,4194304],[1038614528,393216],[1039138816,262144],[1075927201,1,4],[1075929903,1,4],[1078109179,1,4],[1097386748,1,4],[1101060977,1,4],[1110310125,1,4],[1208929635,1,4],[1208929640,1,4],[1249716070,1,4],[1249716081,1,4],[1249738598,1,4],[1249745766,1,4],[1309683983,1,4],[1563297881,1,4],[1694498816,1024],[1694564352,1024],[1694673920,1024],[1694760960,262144],[1695547392,2228224],[1697789952,1024],[1697906688,65536],[1697997824,1024],[1698037760,65536],[1698160640,2048],[1698693120,918528],[1699618816,8192],[1699741696,1051648],[1700794368,4096],[1700823040,32768],[1701011456,8192],[1701134336,8192],[1701143552,256],[1701144064,6656],[1701199872,8192],[1701209088,768],[1701210112,6144],[1701314560,262144],[1701724160,12288],[1701737472,3072],[1702363136,458752],[1702887424,1024],[1702889472,14336],[1702952960,458752],[1703936000,1048576],[1707081728,655360],[1707835392,10240],[1707846656,5120],[1707868160,262144],[1709178880,655360],[1709850624,2048],[1709853696,13312],[1709965312,917504],[1710948352,1024],[1710950400,260096],[1728120832,1024],[1728123904,2048],[1728137216,1024],[1728141312,1024],[1728161792,1024],[1728211968,1024],[1728224256,1024],[1728226304,1024],[1728235520,4096],[1728271360,15360],[1728287744,3072],[1728329728,1024],[1728358400,1024],[1728362496,1024],[1728390144,1024],[1728394240,2048],[1728445440,1024],[1728465920,1024],[1728502784,1024],[1728513024,1024],[1728519168,1024],[1728566272,3072],[1728578560,2048],[1728585728,1024],[1728590848,1024],[1728605184,1024],[1728617472,1024],[1728628736,2048],[1728633856,1024],[1728681984,1024],[1728706560,3072],[1728712704,1024],[1728730112,1024],[1728737024,256],[1728744448,1024],[1728820224,1024],[1728847872,1024],[1728857088,1024],[1728874496,1024],[1728886784,1024],[1728899072,1024],[1728936960,1024],[1728942080,1024],[1728955392,1024],[1728967680,1024],[1728992256,1024],[1728999424,1024],[1729004544,2048],[1729010688,1024],[1729032192,1024],[1729037312,2048],[1729040384,1024],[1729060864,1024],[1729087488,1024],[1729115136,1024],[1729122304,3072],[1729129472,1024],[1729133568,1024],[1729177600,1024],[1729198080,1024],[1729208320,1024],[1729219584,1024],[1729225728,1024],[1729282048,1024],[1729286144,2048],[1729290240,1024],[1729301504,1024],[1729308672,2048],[1729314816,3072],[1729357824,1024],[1729367040,1024],[1729372160,1024],[1729392640,1024],[1729396736,1024],[1729404928,1024],[1729427456,1024],[1729458176,2048],[1729464320,2048],[1729474560,1024],[1729482752,1024],[1729490944,1024],[1729495040,24576],[1729520640,7168],[1729543168,1024],[1729553408,1024],[1729559552,1024],[1729562624,1024],[1729574912,1024],[1729601536,2048],[1729605632,1024],[1729618944,1024],[1729655808,1024],[1729658880,1024],[1729662976,1024],[1729671168,1024],[1729673216,1024],[1729682432,1024],[1729684480,1024],[1729689600,2048],[1729693696,512],[1729696768,6144],[1729703936,1024],[1729708032,2048],[1729729536,1024],[1729731584,1024],[1729746944,1024],[1729757184,1024],[1729773568,1024],[1729797120,2048],[1729815552,1024],[1729818624,1024],[1729823744,1024],[1729825792,1024],[1729828864,1024],[1729837056,1024],[1729847296,1024],[1729875968,1024],[1729884160,1024],[1729889280,2048],[1729940480,1024],[1729957888,1024],[1729986560,3072],[1730024448,1024],[1730043904,1024],[1730057216,1024],[1730070528,1024],[1730074624,1024],[1730077696,1024],[1730079744,1024],[1730084864,1024],[1730097152,7168],[1730122752,1024],[1730125824,1024],[1730127872,1024],[1730136064,1024],[1730150400,209920],[1730417664,1024],[1730419712,1024],[1730421760,1024],[1730426880,3072],[1730430976,1024],[1730437120,1024],[1730446336,2048],[1730453504,22528],[1730478080,1024],[1730481152,2048],[1730484224,1024],[1730489344,1024],[1730491392,2048],[1730496512,1024],[1730503680,2048],[1730509824,1024],[1730512896,8192],[1730522112,2048],[1730531328,4096],[1730541568,3072],[1730551808,1024],[1730553856,2048],[1730557952,1024],[1730563072,1024],[1730565120,1024],[1730567168,2048],[1730573312,1024],[1730577408,1024],[1730579456,1024],[1730599936,4096],[1730608128,1024],[1742743552,2048],[1742748672,1024],[1742753792,1024],[1742789632,4096],[1742820352,1024],[1742868480,1024],[1742874624,1024],[1742878720,2048],[1742884864,1024],[1742894080,1024],[1742898176,1024],[1742904320,1024],[1742910464,1024],[1742914560,1024],[1742942208,1024],[1742948352,3072],[1742955520,1024],[1742960640,1024],[1742963712,2048],[1742980096,1024],[1742982144,1024],[1742984192,1024],[1742988288,1024],[1742998528,1024],[1743002624,1024],[1743012864,1024],[1743017984,1024],[1743028224,1024],[1743036416,1024],[1743040512,1024],[1743047680,2048],[1743053824,2048],[1743066112,1024],[1743095808,1024],[1743098880,1024],[1743105024,1024],[1743115264,3072],[1743119360,1024],[1743121408,2048],[1743126528,1024],[1743133696,1024],[1743136768,2048],[1743151104,1024],[1743176704,3072],[1743180800,1024],[1743186944,1024],[1743196160,2048],[1743208448,2048],[1743228928,1024],[1743238144,2048],[1743254528,1024],[1743258624,1024],[1743294464,1024],[1743311872,1024],[1743324160,1024],[1743334400,1024],[1743336448,1024],[1743349760,1024],[1743355904,1024],[1743357952,1024],[1743381504,1024],[1743388672,1024],[1743393792,1024],[1743403008,1024],[1743420416,2048],[1743432704,1024],[1743434752,1024],[1743458304,1024],[1743466496,1024],[1743468544,2048],[1743474688,2048],[1743486976,6144],[1743501312,1024],[1743503360,1024],[1743505408,1024],[1743510528,34816],[1743585280,4096],[1743591424,2048],[1743602688,1024],[1743607808,1024],[1743624192,1024],[1743630336,22528],[1743654912,11264],[1743673344,3072],[1743684608,1024],[1743686656,2048],[1743691776,8192],[1743700992,1024],[1743703040,1024],[1743715328,2048],[1743726592,2048],[1743733760,1024],[1743740928,1024],[1743755264,2048],[1743761408,3072],[1743765504,2048],[1743768576,2048],[1743773696,1024],[1743778816,1024],[1743785984,1024],[1743791104,1024],[1743800320,1024],[1743803392,1024],[1743813632,1024],[1743821824,1024],[1743825920,1024],[1743844352,1024],[1743850496,1024],[1743865856,1024],[1743870976,2048],[1743888384,1024],[1743894528,2048],[1743903744,1024],[1743915008,1024],[1743929344,1024],[1743945728,2048],[1743953920,1024],[1743955968,3072],[1743964160,1024],[1743967232,1024],[1743969280,1024],[1743974400,1024],[1743984640,1024],[1744013312,1024],[1744043008,1024],[1744048128,1024],[1744058880,7680],[1744086016,1024],[1744103424,1024],[1744108544,1024],[1744115456,256],[1744122880,1024],[1744124928,1024],[1744130048,1024],[1744141312,2048],[1744177152,2048],[1744205824,2048],[1744208896,1024],[1744214016,2048],[1744283648,3072],[1744291840,1024],[1744294912,1024],[1744306176,512],[1744322560,1024],[1744331776,1024],[1744337920,1024],[1744345088,1024],[1744349184,1024],[1744355328,1024],[1744360448,1024],[1744363520,2048],[1744374784,1024],[1744385024,1024],[1744404480,1024],[1744406528,1024],[1744408576,1024],[1744413696,4096],[1744419840,2048],[1744434176,1024],[1744436224,1024],[1744445440,1024],[1744463872,1024],[1744468992,1024],[1744483328,1024],[1744486400,1024],[1744492544,1024],[1744494592,1024],[1744497664,1024],[1744500736,2048],[1744510976,1024],[1744524288,1024],[1744527360,1024],[1744534528,2048],[1744543744,1024],[1744555008,1024],[1744563200,2048],[1744575488,1024],[1744577536,1024],[1744584704,1024],[1744594944,1024],[1744612352,1024],[1744620544,2048],[1744627712,1024],[1744631808,1024],[1744634880,1024],[1744649216,1024],[1744686080,1024],[1744690176,2048],[1744693248,1024],[1744701440,1024],[1744704512,1024],[1744715776,4096],[1744728064,1024],[1744737280,1024],[1744744448,1024],[1744747520,1024],[1744749568,256],[1744755712,1024],[1744782336,1024],[1744787456,2048],[1744799744,2048],[1744812032,1024],[1744816128,1024],[1744818176,2048],[1744823296,1024],[1778384896,256],[1778385408,7680],[1778401280,16384],[1778515968,524288],[1779105792,2621440],[1781792768,786432],[1783234560,131072],[1783627776,1048576],[1785462784,1310720],[1793064960,1048576],[1845886976,131072],[1846542336,262144],[1848115200,262144],[1848414208,4096],[1848639488,65536],[1848836096,196608],[1849163776,655360],[1850212352,131072],[1850408960,81920],[1850514432,1024],[1850521600,1024],[1850523648,49152],[1850736640,786432],[1851596800,8192],[1851654144,2228224],[1855455232,393216],[1856315392,8192],[1856372736,131072],[1856815104,28672],[1856847872,16384],[1856880640,8192],[1857028096,3145728],[1860435968,262144],[1860706304,8192],[1860960256,131072],[1861222400,5242880],[1866596352,65536],[1866711040,4096],[1866743808,8192],[1866989568,524288],[1867841536,65536],[1868283904,8192],[1869611008,393216],[1870055424,2048],[1870086144,24576],[1870135296,327680],[1870528512,2752512],[1873412096,65536],[1873543168,786432],[1874460672,131072],[1874853888,1572864],[1876787200,98304],[1876946944,1024],[1876948992,1024],[1876951040,524288],[1877696512,8192],[1877711872,9216],[1879048192,4456448],[1883832320,196608],[1884291072,1572864],[1886224384,32768],[1886322688,458752],[1887043584,720896],[1888038912,2048],[1891631104,262144],[1893728256,2752512],[1896595456,8192],[1896611840,458752],[1897398272,262144],[1897857024,65536],[1898708992,524288],[1899274240,8192],[1899364352,360448],[1899749376,1024],[1899888640,4456448],[1904369664,6144],[1904476160,786432],[1908539392,131072],[1908761600,1024],[1908932608,196608],[1909194752,262144],[1909481472,106496],[1909719040,16384],[1909744640,1024],[1909766144,2048],[1909784576,32768],[1909850112,131072],[1910112256,2228224],[1914437632,65536],[1916141568,131072],[1916534784,589824],[1917796352,16384],[1917845504,1835008],[1919811584,4096],[1919827968,16384],[1919877120,8192],[1919918080,8192],[1919942656,524288],[1921253376,65536],[1921449984,65536],[1921646592,131072],[1921859584,2048],[1921875968,16384],[1925447680,131072],[1925642240,2048],[1926234112,3145728],[1930952704,393216],[1931476992,262144],[1932263424,1310720],[1933918208,4096],[1934884864,16384],[1934934016,8192],[1934999552,16384],[1935933440,524288],[1937244160,262144],[1937510400,4096],[1939079168,786432],[1940275200,8192],[1940389888,524288],[1941176320,262144],[1941831680,3276800],[1946159104,2048],[1946163200,2048],[1946222592,720896],[1947009024,65536],[1947205632,1048576],[1949433856,4096],[1949564928,393216],[1949990912,4096],[1950011392,4096],[1950089216,262144],[1950482432,32768],[1950679040,98304],[1951137792,262144],[1951727616,65536],[1952026624,4096],[1952075776,4096],[1952102400,2048],[1952382976,65536],[1953497088,393216],[1954545664,4259840],[1958809600,12288],[1958850560,2048],[1958871040,196608],[1959133184,106496],[1959526400,131072],[1959723008,327680],[1960091648,4096],[1960132608,49152],[1960189952,12288],[1960214528,360448],[1960837120,1048576],[1962016768,524288],[1962622976,16384],[1962672128,131072],[1962835968,32768],[1962901504,32768],[1963458560,524288],[1964310528,1638400],[1966080000,262144],[1966419968,4096],[1966452736,4096],[1966669824,98304],[1966800896,983040],[1967800320,8192],[1967816704,1409024],[1969487872,131072],[1969688576,4096],[1969694720,2048],[1969702912,2048],[1969717248,4096],[1969793024,2048],[1969881088,131072],[1970274304,524288],[1970814976,100352],[1970962432,32768],[1971060736,4456448],[1981284352,196608],[1981546496,262144],[1983905792,196608],[1984131072,4096],[1984430080,655360],[1985216512,131072],[1985486848,122880],[1985736704,4096],[1986400256,6144],[1987051520,983040],[1988067328,8192],[1988362240,262144],[1989148672,262144],[1991376896,65536],[1991507968,327680],[1991901184,196608],[1992163328,655360],[1992949760,393216],[1993605120,131072],[1994391552,458752],[1995374592,65536],[1995571200,65536],[1995702272,925696],[1996652544,425984],[1997144064,32768],[1997506560,2048],[1997537280,65536],[1997717504,6144],[1997725696,335872],[1998274560,180224],[1998467072,4096],[1998569472,8192],[1998585856,544768],[1999142912,106496],[1999273984,4096],[1999298560,8192],[1999372288,131072],[1999634432,524288],[2000224256,131072],[2000388096,229376],[2000625664,8192],[2001457152,4096],[2001600512,196608],[2001915904,4096],[2001993728,524288],[2002780160,524288],[2003566592,131072],[2003828736,2359296],[2006228992,8192],[2006433792,16384],[2007025664,2048],[2007072768,425984],[2008023040,1048576],[2011693056,131072],[2011922432,16384],[2012741632,262144],[2013028352,2048],[2013065216,1249280],[2014838784,262144],[2015232000,1310720],[2016673792,262144],[2017460224,524288],[2017992704,8192],[2018017280,32768],[2018246656,786432],[2019035136,2048],[2019164160,196608],[2019426304,131072],[2021654528,524288],[2022211584,16384],[2022244352,32768],[2022670336,8192],[2025848832,4194304],[2030045184,6144],[2030305280,131072],[2030567424,2359296],[2033057792,16384],[2033090560,229376],[2033321984,2048],[2033385472,65536],[2033491968,8192],[2033504256,12288],[2033627136,2048],[2033647616,16384],[2033713152,163840],[2033879040,8192],[2033909760,327680],[2034499584,262144],[2035023872,131072],[2035253248,16384],[2035875840,65536],[2036629504,49152],[2036715520,4096],[2042626048,524288],[2043199488,2048],[2043215872,65536],[2043412480,262144],[2044723200,1048576],[2046296064,262144],[2046754816,65536],[2046836736,49152],[2047082496,491520],[2047606784,196608],[2049966080,81920],[2050162688,65536],[2051014656,2228224],[2053505024,4096],[2053521408,8192],[2054160384,262144],[2054619136,65536],[2055239680,2048],[2055733248,524288],[2056290304,32768],[2056830976,16384],[2057043968,262144],[2059141120,524288],[2059796480,65536],[2059943936,16384],[2060005376,4096],[2060189696,262144],[2061500416,1572864],[2063079424,2048],[2063085568,4096],[2063548416,2048],[2063630336,16384],[2063859712,786432],[2066841600,32768],[2066915328,8192],[2067005440,720896],[2067791872,2260992],[2070118400,40960],[2070216704,65536],[2070347776,32768],[2070708224,4096],[2070728704,4096],[2070937600,1572864],[2072530944,4096],[2072576000,196608],[2073034752,2097152],[2075147264,1024],[2075152384,4096],[2075197440,983040],[2076442624,131072],[2076672000,32768],[2077097984,131072],[2078801920,262144],[2079457280,32768],[2079588352,262144],[2079916032,65536],[2080178176,65536],[2080784384,16384],[2081292288,262144],[2081685504,262144],[2082258944,49152],[2082406400,65536],[2083024896,28672],[2083127296,65536],[2083454976,16384],[2084569088,163840],[2084765696,851968],[2086141952,524288],[2087454720,2048],[2087462912,2048],[2087542784,2048],[2087714816,524288],[2088632320,655360],[2090041344,32768],[2090270720,131072],[2090598400,65536],[2090860544,524288],[2091646976,262144],[2092957696,131072],[2093219840,65536],[2093481984,524288],[2094792704,1359872],[2096234496,65536],[2096349184,16384],[2096627712,32768],[2096693248,196608],[2097020928,16384],[2099232768,1064960],[2100985856,32768],[2101182464,49152],[2101346304,2293760],[2103967744,1572864],[2108227584,65536],[2108358656,65536],[2110783488,16384],[2110914560,131072],[2111111168,32768],[2111201280,8192],[2111242240,16384],[2111307776,524288],[2113830912,32768],[2130706433,255,1],[2155445899,1,4],[2332622848,65536],[2340487168,65536],[2341732352,65536],[2342191104,65536],[2342453248,65536],[2343174144,65536],[2343567360,65536],[2344026112,65536],[2344222720,65536],[2344419328,65536],[2344878080,1310720],[2346254336,65536],[2346385408,196608],[2346713088,65536],[2346844160,131072],[2353725440,65536],[2358181888,65536],[2362245120,196608],[2362572800,65536],[2363490304,65536],[2364342272,65536],[2364538880,65536],[2364735488,65536],[2364932096,65536],[2365128704,131072],[2365521920,65536],[2415919104,65536],[2416377856,65536],[2416705536,65536],[2419326976,65536],[2423980032,65536],[2432630784,65536],[2516582400,65536],[2524119040,65536],[2524512256,131072],[2525075456,1024],[2525085696,1024],[2525091840,1024],[2525101056,1024],[2525626368,131072],[2531196928,65536],[2532442112,3072],[2532449280,1024],[2532453376,4096],[2532461568,2048],[2532465664,2048],[2532470784,3072],[2532481024,5120],[2532489216,3072],[2532496384,1024],[2532499456,1024],[2532501504,5120],[2533294080,65536],[2556985344,32768],[2566914048,65536],[2567110656,65536],[2569142272,262144],[2573402112,65536],[2573533184,65536],[2574647296,131072],[2634022912,65536],[2635202560,65536],[2638020608,65536],[2642018304,65536],[2643722240,65536],[2644246528,65536],[2650734592,65536],[2674555211,1,4],[2682388480,65536],[2714697728,65536],[2724790272,65536],[2734686208,65536],[2737767424,1024],[2738159616,4096],[2738168832,8192],[2738182144,13312],[2738200576,4096],[2738207744,1024],[2738215936,1024],[2738221056,1024],[2742878208,65536],[2743992320,65536],[2746286080,65536],[2746417152,65536],[2748055552,65536],[2792292352,65536],[2810904576,65536],[2814181376,65536],[2829058048,65536],[2844003687,1,4],[2869428224,524288],[2871132160,917504],[2874146816,1048576],[2875719680,1572864],[2882535424,1048576],[2886729728,1048576,1],[2936012800,1835008],[2937978880,131072],[2938765312,196608],[2939027456,3276800],[2942697472,65536],[2942992384,32768],[2945581056,655360],[2946498560,1048576],[2947678208,65536],[2948104192,16384],[2948136960,458752],[3024879616,262144],[3025403904,196608],[3025666048,262144],[3026073600,2048],[3026083840,4096],[3026157568,2129920],[3028385792,98304],[3028811776,524288],[3029602304,2048],[3029637120,2048],[3029653504,10240],[3029696512,8192],[3029770240,8192],[3029860352,1572864],[3031613440,16384],[3031957504,294912],[3032323072,1024],[3033070592,197632],[3033530368,131072],[3033718784,8192],[3033792512,131072],[3034505216,73728],[3035168768,24576],[3035316224,8192],[3054551040,8192],[3054632960,32768],[3055007744,2048],[3055011840,2048],[3055550464,1048576],[3056623616,8192],[3056664576,69632],[3056758784,4096],[3056795648,65536],[3056992256,32768],[3057451008,65536],[3058696192,851968],[3059744768,3670016],[3063742464,65536],[3063955456,8192],[3064856576,131072],[3066560512,524288],[3068952576,32768],[3069050880,73728],[3069181952,524288],[3070099456,65536],[3070230528,4718592],[3075388416,1024],[3075585024,1024],[3075735552,131072],[3076227072,1024],[3076229120,6144],[3076259840,262144],[3078619136,2818048],[3081502720,262144],[3082158080,8192],[3082289152,4718592],[3225667078,1,4],[3229391360,256],[3232235520,65536,1],[3233589760,256],[3389023232,512],[3389028864,512],[3389042688,1024],[3389227008,512],[3389292544,8192],[3389324288,1024],[3389392384,512],[3389407744,512],[3389409280,512],[3389413120,768],[3389414400,512],[3389417216,256],[3389418496,256],[3389419008,512],[3389420032,256],[3389435904,4096],[3389521920,256],[3389522432,1024],[3389524992,256],[3389528064,256],[3389541632,256],[3389554688,8192],[3389571072,4096],[3389595648,256],[3389596160,512],[3389599744,512],[3389600512,1024],[3389602048,768],[3389669376,4096],[3389784320,512],[3389788416,768],[3389802496,256],[3389805568,512],[3389808640,256],[3389809152,512],[3389811200,256],[3389812480,256],[3389813760,256],[3389931520,512],[3389932800,256],[3389933824,1024],[3389935104,512],[3389937664,256],[3389939968,256],[3389941760,512],[3389942784,512],[3389943552,256],[3389944320,512],[3389945344,512],[3389946880,512],[3389947648,256],[3389948160,256],[3389949696,512],[3389953280,256],[3389953792,256],[3389955328,768],[3389958400,768],[3389960192,256],[3389962240,512],[3389968384,512],[3389969664,256],[3389971200,512],[3389971968,512],[3389972736,768],[3389974272,256],[3389975296,1280],[3389978112,256],[3389979392,256],[3390325248,256],[3390328576,256],[3390330624,1024],[3390332416,512],[3390337536,256],[3390338304,256],[3390339072,256],[3390340352,256],[3390340864,256],[3390407424,512],[3390409984,512],[3390411520,512],[3390412288,1280],[3390413824,256],[3390502912,2048],[3390801920,512],[3391488000,1024],[3391490048,2048],[3391500288,23296],[3391523840,1024],[3391525376,512],[3391526144,2048],[3391528448,1024],[3391529984,2048],[3391533056,512],[3391535104,18432],[3391620096,512],[3391620864,256],[3391622912,256],[3391653632,512],[3391654912,256],[3391655680,768],[3391657472,256],[3391658752,512],[3391659520,512],[3391660544,256],[3391686656,512],[3391687424,768],[3391717376,256],[3391717888,512],[3391723520,2048],[3391733760,256],[3391746048,4096],[3391835136,1024],[3391852544,4096],[3391885312,4096],[3391898368,256],[3391900160,256],[3391914240,256],[3391915008,512],[3391918592,512],[3391946752,768],[3391950592,4352],[3392016384,768],[3392017408,512],[3392020480,8192],[3392045056,256],[3392069632,4096],[3392098816,512],[3392110080,256],[3392110592,256],[3392111104,512],[3392794624,4352],[3392864256,256],[3392918528,1024],[3392923648,512],[3392924672,256],[3392942080,2048],[3392954368,2048],[3392958464,4096],[3392963584,7168],[3393089536,1024],[3393124352,1280],[3393126144,256],[3393147136,3840],[3393167360,8192],[3393189888,1024],[3393257472,2560],[3393388544,1024],[3393520640,1024],[3393523712,4096],[3393585152,8192],[3393609728,4096],[3393634304,4096],[3393726464,2048],[3393736704,4096],[3393814528,1024],[3393849344,2048],[3393867776,4096],[3393912320,512],[3393966080,4096],[3393977344,1024],[3394042880,1024],[3394064384,2048],[3394067456,1024],[3394111488,2048],[3394232320,2048],[3394238464,1024],[3394289664,4096],[3394306048,1024],[3394501632,5632],[3394508800,2048],[3394621440,4096],[3394697472,256],[3394698240,1024],[3394719744,4096],[3394832384,2048],[3394895872,1024],[3394924544,4096],[3394946048,256],[3394953216,4096],[3394961408,1024],[3394985984,4096],[3394994176,1024],[3395006464,4096],[3395018752,9216],[3395028992,2048],[3395039232,4096],[3395091456,2048],[3395156992,1024],[3395181568,1024],[3395223552,8192],[3395284992,2048],[3395288064,656642],[3395944706,1,4],[3395944707,1050365,null],[3397001216,2048],[3397009408,8192],[3397021696,4352],[3397026816,256],[3397083136,4096],[3397128192,3072],[3397218304,4096],[3397234688,4096],[3397320704,2048],[3397323776,5120],[3397330944,6144],[3397349376,14336],[3397369856,4608],[3397374976,11264],[3397517312,8192],[3397574656,8192],[3397586944,2048],[3397595136,4096],[3397636096,4096],[3397722112,4096],[3397794304,256],[3397812224,4096],[3397922816,4096],[3397963776,8192],[3398035200,256],[3398279168,8192],[3398307840,4096],[3398370304,1024],[3398373376,8192],[3398383616,2048],[3398606848,4096],[3398614016,1024],[3398616064,3072],[3398668288,4096],[3398705152,4096],[3398713344,16384],[3398770688,8192],[3398803456,8192],[3398819840,8192],[3398832128,8192],[3398842368,1024],[3398877184,4096],[3398885376,9216],[3398926336,8192],[3399004160,4096],[3399024640,1024],[3399036928,4096],[3399335936,8192],[3399393280,8192],[3399528448,4096],[3399631616,256],[3399633664,256],[3399745536,4096],[3399770112,8192],[3399835648,4096],[3399856128,4096],[3399864320,4096],[3399872256,768],[3399873280,256],[3399873792,256],[3399875328,1280],[3399933952,8192],[3400048640,8192],[3400171520,8192],[3400194048,10240],[3400259584,2048],[3400264448,256],[3400269824,1024],[3400335360,1024],[3400337408,2048],[3400392704,8192],[3400417280,4096],[3400589312,8192],[3400790016,4096],[3400826880,8192],[3400847360,2048],[3400861525,1,4],[3400888320,4096],[3400933376,4096],[3400974336,8192],[3401383936,16384],[3401404416,4096],[3401431040,2048],[3401515008,256],[3401532416,7168],[3401580544,1048576],[3405775872,1024],[3405777408,512],[3405779456,256],[3405780992,256],[3405785600,512],[3405786368,768],[3405795584,768],[3405797888,512],[3405799424,512],[3405801472,2048],[3405804032,512],[3405806080,256],[3405807616,256],[3405808128,1536],[3405809920,256],[3405811200,256],[3405811712,256],[3405812224,256],[3405812736,256],[3405813248,768],[3405820160,256],[3405832192,256],[3405841408,1024],[3405844992,256],[3405847040,512],[3405857024,768],[3405858304,512],[3405859840,512],[3405863424,256],[3405865216,1792],[3405868032,256],[3405905152,512],[3405922304,2048],[3405924608,256],[3405934592,2048],[3405938176,512],[3405941760,256],[3405944320,256],[3405944832,1536],[3405946880,2048],[3405952000,512],[3405956096,512],[3405959424,256],[3405960704,512],[3405963776,512],[3405964544,256],[3405966336,512],[3405988864,256],[3405989888,512],[3405990656,256],[3405991936,2048],[3405996032,1024],[3405998336,256],[3406000128,2304],[3406002944,256],[3406006016,256],[3406007040,256],[3406008064,256],[3406070784,768],[3406075648,1280],[3406081536,512],[3406083072,256],[3406084608,256],[3406089472,256],[3406090240,1024],[3406095104,256],[3406095872,512],[3406103552,512],[3406104320,768],[3406105344,256],[3406107904,512],[3406113792,256],[3406114304,512],[3406115840,1536],[3406117888,512],[3406131712,512],[3406132736,256],[3406133248,256],[3406146560,256],[3406148608,768],[3406149888,512],[3406150656,768],[3406152448,256],[3406157312,512],[3406158336,512],[3406201600,256],[3406202880,256],[3406203392,512],[3406204416,256],[3406206464,512],[3406208256,256],[3406208768,256],[3406225408,4096],[3406231552,512],[3406266624,256],[3406268928,512],[3406271232,256],[3406272000,512],[3406274048,256],[3406282752,512],[3406284800,256],[3406299136,256],[3406301184,256],[3406305024,2304],[3406317056,256],[3406320128,256],[3406321152,512],[3406322432,256],[3406327296,512],[3406328576,256],[3406341632,512],[3406342400,256],[3406343424,256],[3406346240,256],[3406346752,512],[3406347776,768],[3406349568,768],[3406351104,256],[3406352640,1792],[3406354688,256],[3406355456,256],[3406372864,256],[3406373888,512],[3406379264,256],[3406380800,256],[3406381312,256],[3406382592,768],[3406383872,768],[3406389248,1536],[3406392320,256],[3406405120,256],[3406438912,256],[3406444544,256],[3406449152,512],[3406451712,1280],[3406454528,256],[3406462208,256],[3406513664,256],[3406515200,1024],[3406516736,256],[3406517248,1024],[3406521344,1024],[3406523648,256],[3406525696,256],[3406526976,256],[3406528000,256],[3406530560,1024],[3406531840,768],[3406541824,1024],[3406548992,1024],[3406565376,256],[3406566144,256],[3406567424,256],[3406575872,256],[3406577920,512],[3406579200,512],[3406583552,2304],[3406586880,512],[3406587648,256],[3406590464,256],[3406591488,256],[3406594560,256],[3406596352,256],[3406611456,3072],[3406615296,256],[3406617344,256],[3406619136,256],[3406622720,1024],[3406631424,256],[3406632960,256],[3406638080,512],[3406647296,2560],[3406650368,1024],[3406671104,256],[3406684160,512],[3406684928,256],[3406686464,256],[3406698496,1024],[3406700800,256],[3406706688,256],[3406707968,512],[3406718976,256],[3406721536,512],[3406722560,256],[3406733824,256],[3406739456,2304],[3406742016,512],[3406747136,256],[3406751488,256],[3406755328,256],[3406757888,4096],[3406763008,768],[3406780160,768],[3406784768,256],[3406786560,2048],[3406791168,512],[3406796032,256],[3406796544,256],[3406797824,1024],[3406802432,256],[3406816000,256],[3406817280,2560],[3406820864,256],[3406825984,256],[3406826496,512],[3406827520,2048],[3406830336,256],[3406833152,256],[3406835968,768],[3406838272,256],[3406857472,256],[3406864640,512],[3406871040,512],[3406881792,256],[3406884352,256],[3406884864,256],[3406886144,256],[3406889472,256],[3406893568,256],[3406896128,256],[3406898944,256],[3406903296,256],[3406907904,512],[3406911488,512],[3406923776,256],[3406930944,256],[3406936832,256],[3406937600,512],[3406948096,256],[3406948608,256],[3406952448,256],[3406954240,256],[3406955008,768],[3406956288,256],[3406962432,256],[3406963968,256],[3406966784,768],[3406967808,256],[3406972928,1024],[3406974976,512],[3406976768,256],[3406980096,512],[3406981376,256],[3406981888,256],[3406982656,256],[3406987520,256],[3406988032,768],[3406991360,256],[3406993664,256],[3407005440,256],[3407007744,256],[3407008512,256],[3407009536,256],[3407024640,256],[3407026176,256],[3407027712,256],[3407028224,2048],[3407030528,256],[3407031296,768],[3407034880,256],[3407035392,512],[3407036416,256],[3407037440,256],[3407038464,256],[3407045888,256],[3407048448,256],[3407053568,256],[3407054080,256],[3407056896,256],[3407058176,256],[3407059968,256],[3407065088,256],[3407065600,512],[3407073280,256],[3407078400,1024],[3407079680,256],[3407081984,256],[3407083520,512],[3407085312,256],[3407089920,256],[3407095808,512],[3407097856,256],[3407101184,256],[3407102208,256],[3407107072,512],[3407108352,256],[3407112704,512],[3407115008,256],[3407115520,768],[3407116800,256],[3407117824,512],[3407120128,2304],[3407123968,256],[3407144448,256],[3407144960,256],[3407145984,256],[3407151104,768],[3407153152,256],[3407153664,256],[3407155712,256],[3407159552,512],[3407161600,256],[3407162368,256],[3407168512,256],[3407172096,256],[3407175680,1024],[3407182848,256],[3407185920,512],[3407188224,256],[3407203840,256],[3407222784,256],[3407223808,512],[3407224576,256],[3407234048,256],[3407236096,256],[3407236608,256],[3407238144,256],[3407238912,256],[3407240192,1024],[3407241984,256],[3407243776,256],[3407247872,512],[3407250176,256],[3407258368,256],[3407259136,256],[3407260160,256],[3407261696,2048],[3407266304,256],[3407278592,512],[3407279360,512],[3407281152,512],[3407282176,256],[3407294208,256],[3407297792,768],[3407300864,256],[3407303936,256],[3407305728,1024],[3407307264,256],[3407309568,256],[3407310848,256],[3407315456,256],[3407318016,512],[3407326208,256],[3407328768,256],[3407329792,512],[3407331328,256],[3407332608,512],[3407334400,1024],[3407339520,256],[3407340032,1536],[3407345920,256],[3407346432,256],[3407351040,256],[3407352320,256],[3407354624,256],[3407358720,256],[3407362048,256],[3407362560,256],[3407364864,256],[3407366656,256],[3407367936,768],[3407369216,768],[3407370752,256],[3407376128,512],[3407377408,256],[3407378944,512],[3407384832,256],[3407386624,512],[3407387904,256],[3407388928,256],[3407390464,256],[3407395328,512],[3407398656,256],[3407399424,256],[3407401984,512],[3407403264,256],[3407403776,256],[3407410176,256],[3407418112,768],[3407425024,256],[3407425536,2048],[3407429632,512],[3407436544,256],[3407438592,512],[3407440384,256],[3407446784,256],[3407447808,256],[3407448576,256],[3407450880,256],[3407452416,768],[3407455232,256],[3407455744,256],[3407457792,512],[3407459328,256],[3407459840,256],[3407462144,256],[3407464192,512],[3407464960,512],[3407466496,4096],[3407471872,256],[3407473408,512],[3407475200,256],[3407481856,256],[3407487488,256],[3407491328,512],[3407492864,768],[3407494144,256],[3407495424,256],[3407496192,256],[3407498240,256],[3407499264,256],[3407500288,256],[3407503616,256],[3407504896,512],[3407508224,512],[3407511808,256],[3407515392,512],[3407516672,512],[3407518208,256],[3407519232,512],[3407522304,256],[3407523072,256],[3407523840,256],[3407526144,256],[3407530496,512],[3407532544,256],[3407533568,256],[3407535616,256],[3407536128,256],[3407537152,256],[3407538176,256],[3407544320,256],[3407546880,256],[3407548160,512],[3407549440,256],[3407549952,512],[3407554560,256],[3407555840,256],[3407557888,256],[3407560960,512],[3407565056,256],[3407566848,256],[3407570432,256],[3407572224,256],[3407574272,256],[3407575296,768],[3407576320,256],[3407595520,256],[3407596032,256],[3407603968,256],[3407606016,256],[3407608320,256],[3407612416,256],[3407612928,256],[3407618304,768],[3407620864,512],[3407623680,256],[3407624192,256],[3407628544,512],[3407629312,256],[3407631872,256],[3407632384,256],[3407638528,256],[3407643392,256],[3407644672,256],[3407645696,256],[3407646976,256],[3407652096,256],[3407653120,512],[3407655424,512],[3407657216,256],[3407657728,256],[3407660032,256],[3407667712,512],[3407671040,256],[3407675904,256],[3407677440,512],[3407678720,512],[3407682560,256],[3407687168,256],[3407689984,256],[3407691008,256],[3407691520,256],[3407693056,256],[3407694080,256],[3407696128,256],[3407698432,256],[3407699712,256],[3407700992,256],[3407701760,256],[3407704064,256],[3407706112,1024],[3407721984,512],[3407723264,256],[3407723776,512],[3407727872,256],[3407729152,256],[3407730944,256],[3407733504,256],[3407734528,256],[3407735040,512],[3407738880,256],[3407740416,512],[3407745024,512],[3407747328,256],[3407747840,256],[3407748352,256],[3407757824,256],[3407761664,256],[3407763200,256],[3407769344,256],[3407771904,256],[3407772416,256],[3407779840,256],[3407780864,256],[3407782400,256],[3407785216,256],[3407785728,256],[3407788800,256],[3407790592,256],[3407796480,256],[3407797248,256],[3407797760,256],[3407800320,512],[3407801088,256],[3407802368,512],[3407803904,256],[3407804928,512],[3407817984,512],[3407819008,256],[3407819520,256],[3407820288,512],[3407824128,256],[3407824896,256],[3407826944,256],[3407828224,256],[3407831296,256],[3407833344,512],[3407834112,512],[3407838208,256],[3407847936,256],[3407851008,256],[3407851776,256],[3407852800,256],[3407854336,256],[3407854848,256],[3407858688,256],[3407862784,256],[3407863296,512],[3407864064,256],[3407865088,256],[3407869952,512],[3407871232,256],[3407877120,256],[3407884288,512],[3407886336,256],[3407887360,256],[3407887872,256],[3407889408,512],[3407891456,256],[3407892736,256],[3407893504,512],[3407896320,256],[3407898112,256],[3407898880,256],[3407905280,256],[3407906048,256],[3407907840,256],[3407910912,256],[3407919616,512],[3407921152,256],[3407922176,256],[3407923968,768],[3407926272,256],[3407938560,256],[3407939328,2304],[3407942912,256],[3407944192,256],[3407945728,256],[3407953664,512],[3407954688,512],[3407956224,256],[3407957760,256],[3407963136,256],[3407968768,256],[3407970560,256],[3407971072,256],[3407974656,256],[3407977472,256],[3407977984,512],[3407982080,256],[3407984896,256],[3407988736,256],[3407989248,768],[3407990272,512],[3407992320,512],[3407994880,768],[3407997184,256],[3407999744,256],[3408001536,256],[3408004096,256],[3408008448,256],[3408009984,256],[3408013056,256],[3408015360,512],[3408016896,256],[3408017408,512],[3408020224,256],[3408020736,256],[3408022528,256],[3408026624,256],[3408030208,256],[3408032000,256],[3408040704,256],[3408041472,256],[3408041984,512],[3408044288,512],[3408050944,256],[3408052224,2048],[3408055296,1024],[3408062464,256],[3408064512,256],[3408065024,256],[3408065792,256],[3408067328,256],[3409379840,768],[3409381888,256],[3409382656,256],[3409384960,256],[3409387008,256],[3409403136,256],[3409405184,256],[3409407232,512],[3409409024,512],[3409409792,256],[3409412096,512],[3409416704,512],[3409428480,256],[3409429504,256],[3409435136,512],[3409435904,256],[3409436672,256],[3409445120,256],[3409445888,256],[3409447936,256],[3409451008,256],[3409454592,256],[3409455104,256],[3409456640,256],[3409457152,2048],[3409462272,512],[3409465856,1024],[3409469184,256],[3409473024,256],[3409475840,256],[3409486080,256],[3409488128,256],[3409488896,512],[3409489664,256],[3409491712,256],[3409492224,256],[3409492736,256],[3409494016,256],[3409495552,256],[3409496320,256],[3409498112,768],[3409499648,256],[3409500160,256],[3409502976,512],[3409504256,256],[3409506304,256],[3409509376,256],[3409509888,256],[3409511680,512],[3409513472,512],[3409517568,256],[3409520384,256],[3409522176,256],[3409525248,256],[3409526016,256],[3409527296,256],[3409528064,768],[3409529088,256],[3409533440,256],[3409536256,256],[3409538304,256],[3409541888,256],[3409550592,256],[3409561600,256],[3409562112,256],[3409563136,256],[3409567232,256],[3409567744,4096],[3409573376,512],[3409574144,256],[3409575168,768],[3409838592,256],[3409871616,256],[3409873664,256],[3409879296,256],[3409888512,256],[3409896448,1024],[3409897984,256],[3409901056,256],[3410796544,1024],[3410798592,1024],[3410867200,1024],[3410898944,4096],[3410952192,4096],[3410960384,4096],[3411018752,512],[3411025920,4096],[3411032320,256],[3411051520,7168],[3411083264,2048],[3411087360,4096],[3411148800,512],[3411152896,2048],[3411214336,1024],[3411228672,2048],[3411271680,4096],[3411410944,32768],[3411475968,512],[3411550208,8192],[3411591168,8192],[3411607552,1024],[3411609600,2048],[3411642368,1024],[3411673088,1024],[3411675136,1024],[3411705856,24576],[3411746816,8192],[3411763200,4096],[3411769344,2048],[3411804160,1024],[3411845120,8192],[3411869696,73728],[3412000768,2048],[3412025344,24576],[3412058112,8192],[3412199233,1,4],[3412264960,6144],[3412283392,4096],[3412336640,6144],[3412344576,256],[3412348928,12288],[3412377600,4096],[3412598784,4096],[3412680704,16384],[3412787200,32768],[3413024768,8192],[3413037056,4096],[3413043200,768],[3413308416,1024],[3413557248,8192],[3413569792,256],[3413571584,1024],[3413579776,3072],[3413594112,1024],[3413595392,256],[3413602560,36608],[3414171648,8192],[3414188032,8192],[3414220800,2048],[3414231040,2048],[3414302720,8192],[3414433792,8192],[3414618112,2048],[3414646784,8192],[3414663168,4096],[3415138304,8192],[3415236608,8192],[3415277568,8192],[3415474176,21504],[3415496192,512],[3415563264,1024],[3415752704,8192],[3415769088,8192],[3415801856,1024],[3416047616,16384],[3416133632,2048],[3416287232,2048],[3416293632,256],[3416309760,8192],[3416326144,1024],[3416372224,256],[3416375296,8192],[3416385195,1,4],[3416694784,8192],[3416784896,8192],[3416930816,512],[3416981504,1024],[3417038848,4096],[3417179136,256],[3417179904,256],[3417202688,8192],[3417276416,8192],[3417292800,40960],[3417352192,2048],[3417853952,4096],[3418071040,8192],[3418161152,512],[3418162688,512],[3418189824,1024],[3418210304,8192],[3418251264,4096],[3418290432,256],[3418292224,512],[3418296320,4096],[3418308608,16384],[3418329088,4096],[3418357760,8192],[3418480640,8192],[3418519552,2048],[3418570752,8192],[3418583040,2048],[3418587136,36864],[3419073536,1024],[3419226112,8192],[3419242496,32768],[3419357184,54272],[3419414528,8192],[3419529216,8192],[3419668480,4096],[3419688960,4096],[3419924480,2048],[3420372992,4096],[3420389376,6144],[3473692770,1,4],[3493338923,1,4],[3508816161,1,4],[3512067466,1,4],[3515954738,1,4],[3520863918,1,4],[3523346432,8192],[3523543040,8192],[3523557376,2048],[3523575808,8192],[3524001792,131072],[3524149248,8192],[3524161536,86016],[3524296704,16384],[3524591616,131072],[3524730880,8192],[3524853760,1507328],[3526395904,2048],[3526557696,196608],[3526934528,8192],[3527933952,458752],[3528409088,16384],[3528450048,8192],[3528589312,131072],[3528949760,16384],[3535388672,16384],[3535822848,8192],[3544186880,524288],[3545235456,934547],[3546170003,1,4],[3546170004,263214,null],[3546433218,2,4],[3546433220,375100,null],[3548905472,2097152],[3584686883,1,4],[3638410422,1,4],[3639259917,1,4],[3657433088,2097152],[3661103104,2883584],[3664009216,43008],[3664248832,393216],[3669606400,8192],[3669618688,2048],[3670016000,1048576],[3673161728,524288],[3673751552,65536],[3678928896,65536],[3679584256,65536],[3679682560,32768],[3682598912,2097152],[3688366080,1572864],[3690070016,393216],[3697655808,16384],[3698327552,262144],[3700981760,32768],[3701080064,131072],[3701473280,3145728],[3706126336,16384],[3706159104,32768],[3706208256,16384],[3706322944,65536],[3706847232,131072],[3707209728,2048],[3707240448,327680],[3707764736,835584],[3708616704,196608],[3715760128,131072],[3716186112,229376],[3716538368,8192],[3716677632,131072],[3719036928,786432],[3720347648,512000],[3720863744,2629632],[3725590528,5242880],[3732733952,65536],[3732832256,32768],[3732930560,1048576],[3735027712,262144],[3735552000,3670016],[3740270592,655360],[3741319168,1048576],[3742629888,131072],[3743135744,1024],[3745513472,3538944],[3749183488,655360],[3750756352,1310720],[3752198144,131072],[3753902080,131072],[3754295296,131072],[3754491904,196608],[3754950656,524288],[3755737088,131072],[3755978752,8192],[3757047808,786432],[3757867008,32768],[3757965312,98304],[3758091264,1024],[3758095360,512],[4089035559,1,4]]; 6 | 7 | // noinspection JSUnusedGlobalSymbols, JSUnusedLocalSymbols 8 | /** 9 | * @return {string} 10 | */ 11 | function FindProxyForURL(url, host) { 12 | 13 | return proxies[findDomain() || findIp() || 3]; 14 | 15 | function findDomain() { 16 | for (var domain = host; ;) { 17 | var i = domains[domain]; 18 | if (i) { 19 | return i; 20 | } 21 | var dot = domain.indexOf('.'); 22 | if (dot < 0) { 23 | // plain host or undefined 24 | return (host == domain) ? 1 : 0; 25 | } 26 | domain = domain.substr(dot + 1); 27 | } 28 | } 29 | 30 | 31 | function ip4ToInt(ipv4) { 32 | var b = ipv4.split('.', 4); 33 | return (b.length == 4) 34 | && (b[0] >= 0 && b[0] <= 255) 35 | && (b[1] >= 0 && b[1] <= 255) 36 | && (b[2] >= 0 && b[2] <= 255) 37 | && (b[3] >= 0 && b[3] <= 255) 38 | ? ((b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3]) >>> 0 : null; 39 | } 40 | 41 | 42 | function findIp() { 43 | // noinspection JSUnresolvedFunction 44 | var intIp = ip4ToInt(host); 45 | var hostIsIp = (intIp != null); 46 | if (!hostIsIp) { 47 | intIp = ip4ToInt(dnsResolve(host) || ""); 48 | if (intIp == null) { 49 | return 0; 50 | } 51 | } 52 | 53 | var left = 0, right = ips.length; 54 | do { 55 | var mid = Math.floor((left + right) / 2); 56 | if (intIp < ips[mid][0]) { 57 | right = mid; 58 | } else if (intIp >= ips[mid][0] + ips[mid][1]) { 59 | left = mid + 1; 60 | } else { 61 | var result = ips[mid][2] || 2; // default is normalIps 62 | // pass through fake ip (like 127.0.0.1) direct accessing 63 | return (hostIsIp && result == 4) ? 1 : result; 64 | } 65 | } while (left + 1 <= right); 66 | return 0; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /test/gfwlist2pac.pac: -------------------------------------------------------------------------------- 1 | // Generated by gfwlist2pac 2 | // https://github.com/clowwindy/gfwlist2pac 3 | 4 | var domains = { 5 | "gimpshop.com": 1, 6 | "directcreative.com": 1, 7 | "speedpluss.org": 1, 8 | "mingpaovan.com": 1, 9 | "wikinews.org": 1, 10 | "joachims.org": 1, 11 | "maiio.net": 1, 12 | "idv.tw": 1, 13 | "mail-archive.com": 1, 14 | "surfeasy.com.au": 1, 15 | "hihistory.net": 1, 16 | "alexlur.org": 1, 17 | "finalion.jp": 1, 18 | "nrk.no": 1, 19 | "laogai.org": 1, 20 | "cmule.com": 1, 21 | "gappp.org": 1, 22 | "givemesomethingtoread.com": 1, 23 | "yahoo.com.tw": 1, 24 | "robtex.com": 1, 25 | "thelifeyoucansave.com": 1, 26 | "perfspot.com": 1, 27 | "ugo.com": 1, 28 | "army.mil": 1, 29 | "amoiist.com": 1, 30 | "uderzo.it": 1, 31 | "zillionk.com": 1, 32 | "placemix.com": 1, 33 | "twitstat.com": 1, 34 | "erabaru.net": 1, 35 | "zhongmeng.org": 1, 36 | "tinypaste.com": 1, 37 | "wo.tc": 1, 38 | "youtu.be": 1, 39 | "prozz.net": 1, 40 | "freemorenews.com": 1, 41 | "penchinese.net": 1, 42 | "mesotw.com": 1, 43 | "favotter.net": 1, 44 | "privacybox.de": 1, 45 | "liaowangxizang.net": 1, 46 | "firstfivefollowers.com": 1, 47 | "rfamobile.org": 1, 48 | "xanga.com": 1, 49 | "godfootsteps.org": 1, 50 | "dalailama.com": 1, 51 | "bigsound.org": 1, 52 | "retweetist.com": 1, 53 | "fizzik.com": 1, 54 | "bbg.gov": 1, 55 | "imagezilla.net": 1, 56 | "myforum.com.hk": 1, 57 | "imlive.com": 1, 58 | "webshots.com": 1, 59 | "ptt.cc": 1, 60 | "lsforum.net": 1, 61 | "bigfools.com": 1, 62 | "ziplib.com": 1, 63 | "makemymood.com": 1, 64 | "foxdie.us": 1, 65 | "juliereyc.com": 1, 66 | "5i01.com": 1, 67 | "beijingspring.com": 1, 68 | "drewolanoff.com": 1, 69 | "twiffo.com": 1, 70 | "blinkx.com": 1, 71 | "michaelmarketl.com": 1, 72 | "views.fm": 1, 73 | "kcome.org": 1, 74 | "acgkj.com": 1, 75 | "branch.com": 1, 76 | "soupofmedia.com": 1, 77 | "autoproxy-gfwlist.googlecode.com": 1, 78 | "po2b.com": 1, 79 | "slideshare.net": 1, 80 | "wikileaks.lu": 1, 81 | "sohcradio.com": 1, 82 | "allgirlsallowed.org": 1, 83 | "pts.org.tw": 1, 84 | "twitonmsn.com": 1, 85 | "5maodang.com": 1, 86 | "idouga.com": 1, 87 | "whyx.org": 1, 88 | "peacehall.com": 1, 89 | "instapaper.com": 1, 90 | "pure18.com": 1, 91 | "greatfirewallofchina.org": 1, 92 | "lagranepoca.com": 1, 93 | "sstatic.net": 1, 94 | "rfa.org": 1, 95 | "sokamonline.com": 1, 96 | "im.tv": 1, 97 | "hulu.com": 1, 98 | "twiyia.com": 1, 99 | "sethwklein.net": 1, 100 | "dupola.com": 1, 101 | "dupola.net": 1, 102 | "coolaler.com": 1, 103 | "ngensis.com": 1, 104 | "googlepages.com": 1, 105 | "mp": 1, 106 | "freeweibo.com": 1, 107 | "novelasia.com": 1, 108 | "v70.us": 1, 109 | "zfreet.com": 1, 110 | "fgmtv.org": 1, 111 | "rssmeme.com": 1, 112 | "futuremessage.org": 1, 113 | "wsj.com": 1, 114 | "ieasynews.net": 1, 115 | "openleaks.org": 1, 116 | "benjaminste.in": 1, 117 | "asahichinese.com": 1, 118 | "twicsy.com": 1, 119 | "sweux.com": 1, 120 | "chrispederick.com": 1, 121 | "amzs.me": 1, 122 | "lkcn.net": 1, 123 | "woxinghuiguo.com": 1, 124 | "wefong.com": 1, 125 | "savemedia.com": 1, 126 | "livingstream.com": 1, 127 | "shangfang.org": 1, 128 | "hkzone.org": 1, 129 | "samsoff.es": 1, 130 | "kcsoftwares.com": 1, 131 | "twip.me": 1, 132 | "zannel.com": 1, 133 | "gaopi.net": 1, 134 | "emacsblog.org": 1, 135 | "tokyocn.com": 1, 136 | "robustnessiskey.com": 1, 137 | "wangruowang.org": 1, 138 | "internetfreedom.org": 1, 139 | "linpie.com": 1, 140 | "fc2.com": 1, 141 | "ghostery.com": 1, 142 | "taolun.info": 1, 143 | "bestforchina.org": 1, 144 | "m-team.cc": 1, 145 | "cna.com.tw": 1, 146 | "setty.com.tw": 1, 147 | "wikipedia.org": 1, 148 | "sorting-algorithms.com": 1, 149 | "kusocity.com": 1, 150 | "twttr.com": 1, 151 | "post.ly": 1, 152 | "backchina.com": 1, 153 | "thespeeder.com": 1, 154 | "tuidang.net": 1, 155 | "sinopitt.info": 1, 156 | "mongodb.org": 1, 157 | "orzistic.org": 1, 158 | "golang.org": 1, 159 | "betfair.com": 1, 160 | "oursogo.com": 1, 161 | "art-or-porn.com": 1, 162 | "omy.sg": 1, 163 | "middle-way.net": 1, 164 | "ap.org": 1, 165 | "dajiyuan.com": 1, 166 | "laqingdan.net": 1, 167 | "youmaker.com": 1, 168 | "anonymizer.com": 1, 169 | "cnavista.com.tw": 1, 170 | "nuvid.com": 1, 171 | "syx86.com": 1, 172 | "engadget.com": 1, 173 | "typepad.com": 1, 174 | "matsushimakaede.com": 1, 175 | "kickstarter.com": 1, 176 | "plm.org.hk": 1, 177 | "falsefire.com": 1, 178 | "fuckgfw.com": 1, 179 | "topnews.in": 1, 180 | "ihakka.net": 1, 181 | "hkatvnews.com": 1, 182 | "dfas.mil": 1, 183 | "pullfolio.com": 1, 184 | "yousendit.com": 1, 185 | "lupm.org": 1, 186 | "tweetdeck.com": 1, 187 | "t35.com": 1, 188 | "plunder.com": 1, 189 | "pbworks.com": 1, 190 | "tpi.org.tw": 1, 191 | "freerk.com": 1, 192 | "networkedblogs.com": 1, 193 | "hahlo.com": 1, 194 | "theampfactory.com": 1, 195 | "gvm.com.tw": 1, 196 | "coolder.com": 1, 197 | "civilhrfront.org": 1, 198 | "rnw.nl": 1, 199 | "apiary.io": 1, 200 | "e-gold.com": 1, 201 | "jitouch.com": 1, 202 | "youtubecn.com": 1, 203 | "livingonline.us": 1, 204 | "your-freedom.net": 1, 205 | "pct.org.tw": 1, 206 | "fringenetwork.com": 1, 207 | "epochtimes.jp": 1, 208 | "deck.ly": 1, 209 | "spinejs.com": 1, 210 | "tvants.com": 1, 211 | "kagyuoffice.org.tw": 1, 212 | "ventureswell.com": 1, 213 | "tiney.com": 1, 214 | "smhric.org": 1, 215 | "6-4.net": 1, 216 | "mash.to": 1, 217 | "ifanqiang.com": 1, 218 | "quadedge.com": 1, 219 | "openid.net": 1, 220 | "rangzen.org": 1, 221 | "fbcdn.net": 1, 222 | "page2rss.com": 1, 223 | "morbell.com": 1, 224 | "boxcar.io": 1, 225 | "freedomhouse.org": 1, 226 | "footwiball.com": 1, 227 | "shixiao.org": 1, 228 | "ecstart.com": 1, 229 | "desc.se": 1, 230 | "sod.co.jp": 1, 231 | "usa.gov": 1, 232 | "twbbs.tw": 1, 233 | "chromeadblock.com": 1, 234 | "rocmp.org": 1, 235 | "gardennetworks.org": 1, 236 | "njuice.com": 1, 237 | "dailyme.com": 1, 238 | "search.com": 1, 239 | "hkhkhk.com": 1, 240 | "puffstore.com": 1, 241 | "advanscene.com": 1, 242 | "onlylady.cn": 1, 243 | "miroguide.com": 1, 244 | "centurys.net": 1, 245 | "planetsuzy.org": 1, 246 | "cdpwu.org": 1, 247 | "myav.com.tw": 1, 248 | "dw-world.com": 1, 249 | "noobbox.com": 1, 250 | "xuchao.org": 1, 251 | "usfk.mil": 1, 252 | "brandonhutchinson.com": 1, 253 | "rapidsharedata.com": 1, 254 | "qmzdd.com": 1, 255 | "foxbusiness.com": 1, 256 | "diigo.com": 1, 257 | "xml-training-guide.com": 1, 258 | "freeoz.org": 1, 259 | "blogimg.jp": 1, 260 | "twitterkr.com": 1, 261 | "anontext.com": 1, 262 | "twurl.nl": 1, 263 | "pilotmoon.com": 1, 264 | "fulue.com": 1, 265 | "turningtorso.com": 1, 266 | "sytes.net": 1, 267 | "mk5000.com": 1, 268 | "americangreencard.com": 1, 269 | "zhenghui.org": 1, 270 | "cao.im": 1, 271 | "50webs.com": 1, 272 | "vtunnel.com": 1, 273 | "nintendium.com": 1, 274 | "xiezhua.com": 1, 275 | "sex8.cc": 1, 276 | "thedw.us": 1, 277 | "markmail.org": 1, 278 | "radioaustralia.net.au": 1, 279 | "seevpn.com": 1, 280 | "rileyguide.com": 1, 281 | "908taiwan.org": 1, 282 | "lerosua.org": 1, 283 | "twitgoo.com": 1, 284 | "livestream.com": 1, 285 | "facesofnyfw.com": 1, 286 | "echofon.com": 1, 287 | "pdetails.com": 1, 288 | "natado.com": 1, 289 | "fourthinternational.org": 1, 290 | "globalrescue.net": 1, 291 | "slinkset.com": 1, 292 | "chinaxchina.com": 1, 293 | "chinasocialdemocraticparty.com": 1, 294 | "marines.mil": 1, 295 | "chinese-hermit.net": 1, 296 | "nextmedia.com": 1, 297 | "jiruan.net": 1, 298 | "calameo.com": 1, 299 | "tweetboner.biz": 1, 300 | "vimperator.org": 1, 301 | "furl.net": 1, 302 | "wordsandturds.com": 1, 303 | "cnn.com": 1, 304 | "dvorak.org": 1, 305 | "suoluo.org": 1, 306 | "fly4ever.me": 1, 307 | "ntdtv.org": 1, 308 | "lsm.org": 1, 309 | "nytimes.com": 1, 310 | "summify.com": 1, 311 | "geohot.com": 1, 312 | "heqinglian.net": 1, 313 | "xinmiao.com.hk": 1, 314 | "skype.com": 1, 315 | "gtricks.com": 1, 316 | "uniteddaily.com.my": 1, 317 | "westkit.net": 1, 318 | "bill2-software.com": 1, 319 | "gstatic.com": 1, 320 | "nydus.ca": 1, 321 | "brizzly.com": 1, 322 | "wallpapercasa.com": 1, 323 | "bonbonme.com": 1, 324 | "mypopescu.com": 1, 325 | "ezpc.tk": 1, 326 | "justfreevpn.com": 1, 327 | "taipei.gov.tw": 1, 328 | "fxnetworks.com": 1, 329 | "cl.ly": 1, 330 | "csdparty.com": 1, 331 | "labiennale.org": 1, 332 | "cpj.org": 1, 333 | "fw.cm": 1, 334 | "sogclub.com": 1, 335 | "weeewooo.net": 1, 336 | "iset.com.tw": 1, 337 | "pornrapidshare.com": 1, 338 | "qtweeter.com": 1, 339 | "fuckcnnic.net": 1, 340 | "92ccav.com": 1, 341 | "yimg.com": 1, 342 | "eriversoft.com": 1, 343 | "hrcir.com": 1, 344 | "emule-ed2k.com": 1, 345 | "twhirl.org": 1, 346 | "vevo.com": 1, 347 | "huaxia-news.com": 1, 348 | "giga-web.jp": 1, 349 | "broadbook.com": 1, 350 | "goldwave.com": 1, 351 | "dok-forum.net": 1, 352 | "ied2k.net": 1, 353 | "chinesen.de": 1, 354 | "myactimes.com": 1, 355 | "skykiwi.com": 1, 356 | "hugoroy.eu": 1, 357 | "conoyo.com": 1, 358 | "izaobao.us": 1, 359 | "alwaysdata.net": 1, 360 | "xvideos.com": 1, 361 | "iicns.com": 1, 362 | "foolsmountain.com": 1, 363 | "torrentcrazy.com": 1, 364 | "so-net.net.tw": 1, 365 | "xinsheng.net": 1, 366 | "scmp.com": 1, 367 | "zozotown.com": 1, 368 | "shopping.com": 1, 369 | "xjp.cc": 1, 370 | "matainja.com": 1, 371 | "supertweet.net": 1, 372 | "geometrictools.com": 1, 373 | "ibros.org": 1, 374 | "fangeming.com": 1, 375 | "shellmix.com": 1, 376 | "gov.tw": 1, 377 | "icl-fi.org": 1, 378 | "a-normal-day.com": 1, 379 | "a5.com.ru": 1, 380 | "apetube.com": 1, 381 | "biantailajiao.com": 1, 382 | "chosun.com": 1, 383 | "baidu.jp": 1, 384 | "philly.com": 1, 385 | "apple.com": 1, 386 | "tweete.net": 1, 387 | "nyt.com": 1, 388 | "mingpaonews.com": 1, 389 | "gopetition.com": 1, 390 | "longtermly.net": 1, 391 | "realraptalk.com": 1, 392 | "gongwt.com": 1, 393 | "fooooo.com": 1, 394 | "gamebase.com.tw": 1, 395 | "in.com": 1, 396 | "vidoemo.com": 1, 397 | "xrea.com": 1, 398 | "morningsun.org": 1, 399 | "tibetalk.com": 1, 400 | "blogtd.org": 1, 401 | "helpzhuling.org": 1, 402 | "htmldog.com": 1, 403 | "mimivip.com": 1, 404 | "htl.li": 1, 405 | "tap11.com": 1, 406 | "yilubbs.com": 1, 407 | "zuola.com": 1, 408 | "pengyulong.com": 1, 409 | "provideocoalition.com": 1, 410 | "fan-qiang.com": 1, 411 | "twt.tl": 1, 412 | "ithome.com.tw": 1, 413 | "dy24k.info": 1, 414 | "chinainperspective.com": 1, 415 | "cms.gov": 1, 416 | "lookpic.com": 1, 417 | "ultravpn.fr": 1, 418 | "webs-tv.net": 1, 419 | "hakkatv.org.tw": 1, 420 | "wretch.cc": 1, 421 | "urbanoutfitters.com": 1, 422 | "mobileways.de": 1, 423 | "c-est-simple.com": 1, 424 | "myfreshnet.com": 1, 425 | "plays.com.tw": 1, 426 | "journalofdemocracy.org": 1, 427 | "cookingtothegoodlife.com": 1, 428 | "taiwandaily.net": 1, 429 | "bloomberg.de": 1, 430 | "catcatbox.com": 1, 431 | "thevivekspot.com": 1, 432 | "mingpaomonthly.com": 1, 433 | "plus28.com": 1, 434 | "tunnelbear.com": 1, 435 | "twt.fm": 1, 436 | "twipple.jp": 1, 437 | "premeforwindows7.com": 1, 438 | "ladbrokes.com": 1, 439 | "bookshelfporn.com": 1, 440 | "wikimapia.org": 1, 441 | "catfightpayperview.xxx": 1, 442 | "dw.de": 1, 443 | "bloodshed.net": 1, 444 | "catholic.org.hk": 1, 445 | "chuizi.net": 1, 446 | "uygur.org": 1, 447 | "googlesile.com": 1, 448 | "ka-wai.com": 1, 449 | "wujie.net": 1, 450 | "hkepc.com": 1, 451 | "bjzc.org": 1, 452 | "nexton-net.jp": 1, 453 | "entermap.com": 1, 454 | "brightkite.com": 1, 455 | "bwsj.hk": 1, 456 | "pdproxy.com": 1, 457 | "ustream.tv": 1, 458 | "lyricsquote.com": 1, 459 | "psblog.name": 1, 460 | "flightcaster.com": 1, 461 | "mad-ar.ch": 1, 462 | "gdzf.org": 1, 463 | "reuters.com": 1, 464 | "unblock.cn.com": 1, 465 | "whereiswerner.com": 1, 466 | "cdpweb.org": 1, 467 | "sugarsync.com": 1, 468 | "nuzcom.com": 1, 469 | "want-daily.com": 1, 470 | "helloqueer.com": 1, 471 | "cuiweiping.net": 1, 472 | "baby-kingdom.com": 1, 473 | "dotplane.com": 1, 474 | "ccdtr.org": 1, 475 | "wikileaks.pl": 1, 476 | "bot.nu": 1, 477 | "dalianmeng.org": 1, 478 | "vansky.com": 1, 479 | "latimes.com": 1, 480 | "google.co.jp": 1, 481 | "tvunetworks.com": 1, 482 | "futurechinaforum.org": 1, 483 | "hikinggfw.org": 1, 484 | "qoos.com": 1, 485 | "target.com": 1, 486 | "waqn.com": 1, 487 | "osfoora.com": 1, 488 | "guomin.us": 1, 489 | "cyberghostvpn.com": 1, 490 | "billywr.com": 1, 491 | "twittertim.es": 1, 492 | "felixcat.net": 1, 493 | "toodoc.com": 1, 494 | "yam.com": 1, 495 | "porn.com": 1, 496 | "stoptibetcrisis.net": 1, 497 | "xuchao.net": 1, 498 | "generesis.com": 1, 499 | "minimalmac.com": 1, 500 | "yidio.com": 1, 501 | "aolnews.com": 1, 502 | "newcenturymc.com": 1, 503 | "newcenturynews.com": 1, 504 | "shaunthesheep.com": 1, 505 | "newsminer.com": 1, 506 | "jwmusic.org": 1, 507 | "socialwhale.com": 1, 508 | "drtuber.com": 1, 509 | "devio.us": 1, 510 | "wikilivres.info": 1, 511 | "gmbd.cn": 1, 512 | "hkgreenradio.org": 1, 513 | "mtw.tl": 1, 514 | "ziddu.com": 1, 515 | "slavasoft.com": 1, 516 | "internationalrivers.org": 1, 517 | "ttv.com.tw": 1, 518 | "tv.com": 1, 519 | "securitykiss.com": 1, 520 | "akiba-online.com": 1, 521 | "wikimedia.org": 1, 522 | "aculo.us": 1, 523 | "bitly.com": 1, 524 | "breakingtweets.com": 1, 525 | "sinomontreal.ca": 1, 526 | "secretchina.com": 1, 527 | "gradconnection.com": 1, 528 | "scmpchinese.com": 1, 529 | "rfi.my": 1, 530 | "voagd.com": 1, 531 | "showtime.jp": 1, 532 | "mobatek.net": 1, 533 | "atgfw.org": 1, 534 | "weiboleak.com": 1, 535 | "support": 1, 536 | "hrichina.org": 1, 537 | "tibetwrites.org": 1, 538 | "mingpaony.com": 1, 539 | "chinatweeps.com": 1, 540 | "topify.com": 1, 541 | "transgressionism.org": 1, 542 | "slickvpn.com": 1, 543 | "stuffimreading.com": 1, 544 | "mizzmona.com": 1, 545 | "lester850.info": 1, 546 | "stackfile.com": 1, 547 | "uyghurcongress.org": 1, 548 | "bullog.org": 1, 549 | "24smile.org": 1, 550 | "megurineluka.com": 1, 551 | "friendfeed.com": 1, 552 | "liudejun.com": 1, 553 | "fanswong.com": 1, 554 | "sexinsex.net": 1, 555 | "boxun.com": 1, 556 | "tiandixing.org": 1, 557 | "oizoblog.com": 1, 558 | "exploader.net": 1, 559 | "roodo.com": 1, 560 | "tbpic.info": 1, 561 | "putlocker.com": 1, 562 | "eevpn.com": 1, 563 | "dafagood.com": 1, 564 | "sinocast.com": 1, 565 | "opera.com": 1, 566 | "mpfinance.com": 1, 567 | "pornvisit.com": 1, 568 | "taiwannation.com.tw": 1, 569 | "ifjc.org": 1, 570 | "if-not-true-then-false.com": 1, 571 | "upload4u.info": 1, 572 | "prosiben.de": 1, 573 | "bayvoice.net": 1, 574 | "sina.com.tw": 1, 575 | "referer.us": 1, 576 | "trendsmap.com": 1, 577 | "fgmtv.net": 1, 578 | "readingtimes.com.tw": 1, 579 | "1pondo.tv": 1, 580 | "xfm.pp.ru": 1, 581 | "xfiles.to": 1, 582 | "newtaiwan.com.tw": 1, 583 | "epochtimes-romania.com": 1, 584 | "4chan.org": 1, 585 | "bbc.in": 1, 586 | "romanandreg.com": 1, 587 | "urlparser.com": 1, 588 | "peopo.org": 1, 589 | "ipicture.ru": 1, 590 | "dotsub.com": 1, 591 | "mathiew-badimon.com": 1, 592 | "rockmelt.com": 1, 593 | "twittbot.net": 1, 594 | "sockslist.net": 1, 595 | "keepandshare.com": 1, 596 | "avoision.com": 1, 597 | "coveringweb.com": 1, 598 | "unix100.com": 1, 599 | "sogoo.org": 1, 600 | "goldenmelody.com.tw": 1, 601 | "wanderinghorse.net": 1, 602 | "vot.org": 1, 603 | "chinacomments.org": 1, 604 | "wikileaks.ch": 1, 605 | "ronjoneswriter.com": 1, 606 | "bbsfeed.com": 1, 607 | "facebook.net": 1, 608 | "mymaji.com": 1, 609 | "iask.bz": 1, 610 | "tubecao.com": 1, 611 | "dontmovetochina.com": 1, 612 | "hidemyass.com": 1, 613 | "myparagliding.com": 1, 614 | "pandora.com": 1, 615 | "getcloudapp.com": 1, 616 | "klip.me": 1, 617 | "imagevenue.com": 1, 618 | "chinafreepress.org": 1, 619 | "streetvoice.com": 1, 620 | "zhe.la": 1, 621 | "hsjp.net": 1, 622 | "xh4n.cn": 1, 623 | "botanwang.com": 1, 624 | "dropbox.com": 1, 625 | "hellouk.org": 1, 626 | "animecrazy.net": 1, 627 | "12vpn.com": 1, 628 | "s8forum.com": 1, 629 | "picturesocial.com": 1, 630 | "bullogger.com": 1, 631 | "888.com": 1, 632 | "offbeatchina.com": 1, 633 | "seezone.net": 1, 634 | "frontlinedefenders.org": 1, 635 | "theblemish.com": 1, 636 | "internet.org": 1, 637 | "anthonycalzadilla.com": 1, 638 | "feelssh.com": 1, 639 | "rsf.org": 1, 640 | "lvhai.org": 1, 641 | "boardreader.com": 1, 642 | "owl.li": 1, 643 | "geocities.com": 1, 644 | "nobelprize.org": 1, 645 | "pornmm.net": 1, 646 | "wuerkaixi.com": 1, 647 | "sina.com.hk": 1, 648 | "heiyo.info": 1, 649 | "foxtang.com": 1, 650 | "tnaflix.com": 1, 651 | "tuidang.org": 1, 652 | "paperb.us": 1, 653 | "billypan.com": 1, 654 | "zvereff.com": 1, 655 | "openvpn.net": 1, 656 | "pastebin.com": 1, 657 | "kaiyuan.de": 1, 658 | "ameblo.jp": 1, 659 | "findbook.tw": 1, 660 | "ccthere.com": 1, 661 | "markmilian.com": 1, 662 | "cdpusa.org": 1, 663 | "newgrounds.com": 1, 664 | "xpdo.net": 1, 665 | "rapbull.net": 1, 666 | "innermongolia.org": 1, 667 | "feedbooks.mobi": 1, 668 | "tumblweed.org": 1, 669 | "feedzshare.com": 1, 670 | "blogcatalog.com": 1, 671 | "xcritic.com": 1, 672 | "lsmchinese.org": 1, 673 | "davidziegler.net": 1, 674 | "sneakme.net": 1, 675 | "hwinfo.com": 1, 676 | "vpnfire.com": 1, 677 | "law.com": 1, 678 | "tsemtulku.com": 1, 679 | "spb.com": 1, 680 | "i1.hk": 1, 681 | "iconpaper.org": 1, 682 | "vimeo.com": 1, 683 | "grandtrial.org": 1, 684 | "holyspiritspeaks.org": 1, 685 | "2008xianzhang.info": 1, 686 | "archive.is": 1, 687 | "zaobao.com": 1, 688 | "tmi.me": 1, 689 | "nobodycanstop.us": 1, 690 | "whylover.com": 1, 691 | "starp2p.com": 1, 692 | "dalailamaworld.com": 1, 693 | "lastfm.es": 1, 694 | "hkfront.org": 1, 695 | "pbxes.com": 1, 696 | "getfreedur.com": 1, 697 | "bobulate.com": 1, 698 | "sevenload.com": 1, 699 | "lockdown.com": 1, 700 | "idsam.com": 1, 701 | "twitter4j.org": 1, 702 | "liansi.org": 1, 703 | "metacafe.com": 1, 704 | "twistory.net": 1, 705 | "zaozon.com": 1, 706 | "peeasian.com": 1, 707 | "mixero.com": 1, 708 | "thepiratebay.org": 1, 709 | "toutfr.com": 1, 710 | "tokyo-247.com": 1, 711 | "twreg.info": 1, 712 | "twitzap.com": 1, 713 | "bignews.org": 1, 714 | "tora.to": 1, 715 | "fileserve.com": 1, 716 | "muzu.tv": 1, 717 | "shitaotv.org": 1, 718 | "wengewang.org": 1, 719 | "geek-art.net": 1, 720 | "gongmeng.info": 1, 721 | "china21.com": 1, 722 | "wenhui.ch": 1, 723 | "uni.cc": 1, 724 | "feedburner.com": 1, 725 | "webfee.tk": 1, 726 | "sharecool.org": 1, 727 | "sex-11.com": 1, 728 | "vanemu.cn": 1, 729 | "marc.info": 1, 730 | "fapdu.com": 1, 731 | "coolloud.org.tw": 1, 732 | "verizon.net": 1, 733 | "sacom.hk": 1, 734 | "imdb.com": 1, 735 | "wikiwiki.jp": 1, 736 | "wufi.org.tw": 1, 737 | "bt95.com": 1, 738 | "hackthatphone.net": 1, 739 | "neverforget8964.org": 1, 740 | "yong.hu": 1, 741 | "israbox.com": 1, 742 | "iask.ca": 1, 743 | "riku.me": 1, 744 | "prestige-av.com": 1, 745 | "alwaysdata.com": 1, 746 | "ogaoga.org": 1, 747 | "williamhill.com": 1, 748 | "expatshield.com": 1, 749 | "secureserver.net": 1, 750 | "gardennetworks.com": 1, 751 | "ntdtv.co": 1, 752 | "actimes.com.au": 1, 753 | "tjholowaychuk.com": 1, 754 | "huanghuagang.org": 1, 755 | "vanilla-jp.com": 1, 756 | "nsc.gov.tw": 1, 757 | "ntdtv.ca": 1, 758 | "wwitv.com": 1, 759 | "chinaaffairs.org": 1, 760 | "privatetunnel.com": 1, 761 | "kinghost.com": 1, 762 | "cdig.info": 1, 763 | "usgs.gov": 1, 764 | "hkreporter.com": 1, 765 | "newscn.org": 1, 766 | "simpleproductivityblog.com": 1, 767 | "box.net": 1, 768 | "freexinwen.com": 1, 769 | "scriptspot.com": 1, 770 | "chenguangcheng.com": 1, 771 | "karayou.com": 1, 772 | "saiq.me": 1, 773 | "heungkongdiscuss.com": 1, 774 | "ggssl.com": 1, 775 | "zhuichaguoji.org": 1, 776 | "china101.com": 1, 777 | "hideipvpn.com": 1, 778 | "sina.com": 1, 779 | "orn.jp": 1, 780 | "gartlive.com": 1, 781 | "clientsfromhell.net": 1, 782 | "allinfa.com": 1, 783 | "ccavtop10.com": 1, 784 | "twittergadget.com": 1, 785 | "cecc.gov": 1, 786 | "opendemocracy.net": 1, 787 | "clipfish.de": 1, 788 | "xskywalker.com": 1, 789 | "paint.net": 1, 790 | "vcfbuilder.org": 1, 791 | "procopytips.com": 1, 792 | "internetdefenseleague.org": 1, 793 | "pidown.com": 1, 794 | "openinkpot.org": 1, 795 | "mobypicture.com": 1, 796 | "cdnews.com.tw": 1, 797 | "lovequicksilver.com": 1, 798 | "singtao.ca": 1, 799 | "soc.mil": 1, 800 | "woeser.com": 1, 801 | "weijingsheng.org": 1, 802 | "doubleaf.com": 1, 803 | "hanunyi.com": 1, 804 | "tinychat.com": 1, 805 | "mp3ye.eu": 1, 806 | "9bis.com": 1, 807 | "qkshare.com": 1, 808 | "time.com": 1, 809 | "bebo.com": 1, 810 | "newspeak.cc": 1, 811 | "tripod.com": 1, 812 | "chevronwp7.com": 1, 813 | "spencertipping.com": 1, 814 | "jackjia.com": 1, 815 | "c-spanvideo.org": 1, 816 | "zonaeuropa.com": 1, 817 | "minghui-school.org": 1, 818 | "stupidvideos.com": 1, 819 | "mingpaosf.com": 1, 820 | "tiscali.it": 1, 821 | "hongzhi.li": 1, 822 | "hihiforum.com": 1, 823 | "moztw.org": 1, 824 | "slheng.com": 1, 825 | "flnet.org": 1, 826 | "chinayouth.org.hk": 1, 827 | "twitiq.com": 1, 828 | "chinaaid.org": 1, 829 | "vaayoo.com": 1, 830 | "userdefined2.com": 1, 831 | "bloglines.com": 1, 832 | "whydidyoubuymethat.com": 1, 833 | "pixnet.net": 1, 834 | "photofocus.com": 1, 835 | "laomiu.com": 1, 836 | "songjianjun.com": 1, 837 | "monitorchina.org": 1, 838 | "t66y.com": 1, 839 | "files2me.com": 1, 840 | "wforum.com": 1, 841 | "gaeproxy.googlecode.com": 1, 842 | "bestvpnservice.com": 1, 843 | "killwall.com": 1, 844 | "tchrd.org": 1, 845 | "chinamz.org": 1, 846 | "feministteacher.com": 1, 847 | "shadowsocks.org": 1, 848 | "wattpad.com": 1, 849 | "wow-life.net": 1, 850 | "twitvid.com": 1, 851 | "twitter.jp": 1, 852 | "kzeng.info": 1, 853 | "thebodyshop-usa.com": 1, 854 | "youxu.info": 1, 855 | "lianyue.net": 1, 856 | "youtube.com": 1, 857 | "zhreader.com": 1, 858 | "tcno.net": 1, 859 | "ncn.org": 1, 860 | "12bet.com": 1, 861 | "tweeplike.me": 1, 862 | "analyze-v.com": 1, 863 | "edubridge.com": 1, 864 | "cari.com.my": 1, 865 | "ezpeer.com": 1, 866 | "2000fun.com": 1, 867 | "bnrmetal.com": 1, 868 | "nf.id.au": 1, 869 | "sowers.org.hk": 1, 870 | "yzzk.com": 1, 871 | "tampabay.com": 1, 872 | "danke4china.net": 1, 873 | "epochtimes.co.kr": 1, 874 | "nowtorrents.com": 1, 875 | "atlaspost.com": 1, 876 | "chinaway.org": 1, 877 | "stickam.com": 1, 878 | "dotheyfolloweachother.com": 1, 879 | "asianews.it": 1, 880 | "fmnnow.com": 1, 881 | "9001700.com": 1, 882 | "thepiratebay.se": 1, 883 | "thetrotskymovie.com": 1, 884 | "vimgolf.com": 1, 885 | "kendincos.net": 1, 886 | "kurtmunger.com": 1, 887 | "maruta.be": 1, 888 | "xtube.com": 1, 889 | "qusi8.net": 1, 890 | "hk-pub.com": 1, 891 | "nurgo-software.com": 1, 892 | "byethost8.com": 1, 893 | "freebearblog.org": 1, 894 | "touch99.com": 1, 895 | "graphis.ne.jp": 1, 896 | "myeclipseide.com": 1, 897 | "linux-engineer.net": 1, 898 | "great-roc.org": 1, 899 | "rthk.hk": 1, 900 | "chinainperspective.net": 1, 901 | "ozchinese.com": 1, 902 | "twilio.com": 1, 903 | "istockphoto.com": 1, 904 | "sinoants.com": 1, 905 | "goodreaders.com": 1, 906 | "asiaharvest.org": 1, 907 | "lidecheng.com": 1, 908 | "t.co": 1, 909 | "twstar.net": 1, 910 | "epochtimes.com": 1, 911 | "ilove80.be": 1, 912 | "new-akiba.com": 1, 913 | "xmusic.fm": 1, 914 | "ntdtv.ru": 1, 915 | "tvboxnow.com": 1, 916 | "wisevid.com": 1, 917 | "hku.hk": 1, 918 | "zsrhao.com": 1, 919 | "bet365.com": 1, 920 | "power.com": 1, 921 | "ernestmandel.org": 1, 922 | "boxunblog.com": 1, 923 | "geocities.jp": 1, 924 | "tibetonline.tv": 1, 925 | "fanqianghou.com": 1, 926 | "modfetish.com": 1, 927 | "jobso.tv": 1, 928 | "ait.org.tw": 1, 929 | "ow.ly": 1, 930 | "ignitedetroit.net": 1, 931 | "topshare.us": 1, 932 | "unholyknight.com": 1, 933 | "cctongbao.com": 1, 934 | "neighborhoodr.com": 1, 935 | "sinocism.com": 1, 936 | "twitthat.com": 1, 937 | "ranyunfei.com": 1, 938 | "sharpdaily.com.hk": 1, 939 | "porn2.com": 1, 940 | "hyperrate.com": 1, 941 | "minzhuhua.net": 1, 942 | "ganges.com": 1, 943 | "tweepmag.com": 1, 944 | "ipvanish.com": 1, 945 | "idiomconnection.com": 1, 946 | "bitshare.com": 1, 947 | "fuckgfw.org": 1, 948 | "mcfog.com": 1, 949 | "dajiyuan.eu": 1, 950 | "over-blog.com": 1, 951 | "tynsoe.org": 1, 952 | "khmusic.com.tw": 1, 953 | "dabr.me": 1, 954 | "hiitch.com": 1, 955 | "tmagazine.com": 1, 956 | "zuo.la": 1, 957 | "kissbbao.cn": 1, 958 | "tycool.com": 1, 959 | "skyhighpremium.com": 1, 960 | "kui.name": 1, 961 | "eyevio.jp": 1, 962 | "yyii.org": 1, 963 | "proxy.org": 1, 964 | "thomasbernhard.org": 1, 965 | "itweet.net": 1, 966 | "futureme.org": 1, 967 | "greatzhonghua.org": 1, 968 | "muzi.net": 1, 969 | "alvinalexander.com": 1, 970 | "fqrouter.com": 1, 971 | "hua-yue.net": 1, 972 | "skimtube.com": 1, 973 | "duckmylife.com": 1, 974 | "twitter.com": 1, 975 | "lenwhite.com": 1, 976 | "epochtimes.se": 1, 977 | "tokyo-hot.com": 1, 978 | "asdfg.jp": 1, 979 | "cnd.org": 1, 980 | "imageshack.us": 1, 981 | "getjetso.com": 1, 982 | "freewallpaper4.me": 1, 983 | "seesmic.com": 1, 984 | "videomo.com": 1, 985 | "hotpotato.com": 1, 986 | "retweeteffect.com": 1, 987 | "warehouse333.com": 1, 988 | "sproutcore.com": 1, 989 | "getsmartlinks.com": 1, 990 | "heix.pp.ru": 1, 991 | "sadpanda.us": 1, 992 | "aboluowang.com": 1, 993 | "jayparkinsonmd.com": 1, 994 | "wangafu.net": 1, 995 | "bralio.com": 1, 996 | "sourceforge.net": 1, 997 | "pornstarclub.com": 1, 998 | "wordboner.com": 1, 999 | "jqueryui.com": 1, 1000 | "mcadforums.com": 1, 1001 | "freegao.com": 1, 1002 | "twibs.com": 1, 1003 | "ccue.com": 1, 1004 | "wanglixiong.com": 1, 1005 | "zhanbin.net": 1, 1006 | "aol.com": 1, 1007 | "kompozer.net": 1, 1008 | "plusbb.com": 1, 1009 | "tweetymail.com": 1, 1010 | "simplecd.org": 1, 1011 | "jbtalks.cc": 1, 1012 | "privatepaste.com": 1, 1013 | "lalulalu.com": 1, 1014 | "fastly.net": 1, 1015 | "freetibet.org": 1, 1016 | "nuexpo.com": 1, 1017 | "businessweek.com": 1, 1018 | "ssh91.com": 1, 1019 | "isgreat.org": 1, 1020 | "666kb.com": 1, 1021 | "hrw.org": 1, 1022 | "tidyread.com": 1, 1023 | "speckleapp.com": 1, 1024 | "userdefined.com": 1, 1025 | "caobian.info": 1, 1026 | "keso.cn": 1, 1027 | "incredibox.fr": 1, 1028 | "twibbon.com": 1, 1029 | "isuntv.com": 1, 1030 | "tvider.com": 1, 1031 | "helpeachpeople.com": 1, 1032 | "hutianyi.net": 1, 1033 | "amnesty.org": 1, 1034 | "xys.org": 1, 1035 | "namsisi.com": 1, 1036 | "redtube.com": 1, 1037 | "teamseesmic.com": 1, 1038 | "utom.us": 1, 1039 | "tibet.org.tw": 1, 1040 | "md-t.org": 1, 1041 | "zhongguotese.net": 1, 1042 | "msguancha.com": 1, 1043 | "perlhowto.com": 1, 1044 | "multiproxy.org": 1, 1045 | "wengewang.com": 1, 1046 | "sexhu.com": 1, 1047 | "0rz.tw": 1, 1048 | "zonble.net": 1, 1049 | "jkforum.net": 1, 1050 | "sis001.us": 1, 1051 | "whatblocked.com": 1, 1052 | "cotweet.com": 1, 1053 | "xuite.net": 1, 1054 | "citizenlab.org": 1, 1055 | "faststone.org": 1, 1056 | "vapurl.com": 1, 1057 | "value-domain.com": 1, 1058 | "erights.net": 1, 1059 | "anobii.com": 1, 1060 | "pign.net": 1, 1061 | "mog.com": 1, 1062 | "fsurf.com": 1, 1063 | "fredwilson.vc": 1, 1064 | "zacebook.com": 1, 1065 | "hechaji.com": 1, 1066 | "x-berry.com": 1, 1067 | "tkforum.tk": 1, 1068 | "pagodabox.com": 1, 1069 | "dl-laby.jp": 1, 1070 | "thesartorialist.com": 1, 1071 | "soup.io": 1, 1072 | "youporn.com": 1, 1073 | "dayabook.com": 1, 1074 | "dailidaili.com": 1, 1075 | "mx981.com": 1, 1076 | "fangong.org": 1, 1077 | "chinaaid.us": 1, 1078 | "powercx.com": 1, 1079 | "9bis.net": 1, 1080 | "duplicati.com": 1, 1081 | "141hongkong.com": 1, 1082 | "bonjourlesgeeks.com": 1, 1083 | "interestinglaugh.com": 1, 1084 | "ippotv.com": 1, 1085 | "peerpong.com": 1, 1086 | "7capture.com": 1, 1087 | "uhrp.org": 1, 1088 | "yymaya.com": 1, 1089 | "marco.org": 1, 1090 | "trtc.com.tw": 1, 1091 | "here4news.com": 1, 1092 | "mixpod.com": 1, 1093 | "fengzhenghu.com": 1, 1094 | "taiwan-sex.com": 1, 1095 | "xiaod.in": 1, 1096 | "packetix.net": 1, 1097 | "im88.tw": 1, 1098 | "epochtimes.ru": 1, 1099 | "chinatimes.com": 1, 1100 | "j.mp": 1, 1101 | "voachinese.com": 1, 1102 | "laoyang.info": 1, 1103 | "codeshare.io": 1, 1104 | "dailymotion.com": 1, 1105 | "new-3lunch.net": 1, 1106 | "bcc.com.tw": 1, 1107 | "news100.com.tw": 1, 1108 | "voachineseblog.com": 1, 1109 | "eamonnbrennan.com": 1, 1110 | "topstyle4.com": 1, 1111 | "wpoforum.com": 1, 1112 | "freealim.com": 1, 1113 | "vpngate.net": 1, 1114 | "x1949x.com": 1, 1115 | "twitterfeed.com": 1, 1116 | "palacemoon.com": 1, 1117 | "mhradio.org": 1, 1118 | "webworkerdaily.com": 1, 1119 | "fillthesquare.org": 1, 1120 | "dadazim.com": 1, 1121 | "thehousenews.com": 1, 1122 | "yvesgeleyn.com": 1, 1123 | "loved.hk": 1, 1124 | "dontfilter.us": 1, 1125 | "catholic.org.tw": 1, 1126 | "civicparty.hk": 1, 1127 | "on.cc": 1, 1128 | "zarias.com": 1, 1129 | "ccue.ca": 1, 1130 | "pastie.org": 1, 1131 | "web2project.net": 1, 1132 | "aisex.com": 1, 1133 | "curvefish.com": 1, 1134 | "slime.com.tw": 1, 1135 | "marxists.org": 1, 1136 | "chubun.com": 1, 1137 | "liuhanyu.com": 1, 1138 | "boxun.tv": 1, 1139 | "xuzhiyong.net": 1, 1140 | "joeedelman.com": 1, 1141 | "dynawebinc.com": 1, 1142 | "jbtalks.com": 1, 1143 | "iu45.com": 1, 1144 | "w3.org": 1, 1145 | "davidslog.com": 1, 1146 | "tv-intros.com": 1, 1147 | "dafahao.com": 1, 1148 | "mingpaotor.com": 1, 1149 | "nekoslovakia.net": 1, 1150 | "epochtimes.de": 1, 1151 | "zhong.pp.ru": 1, 1152 | "chinalawtranslate.com": 1, 1153 | "freessh.us": 1, 1154 | "cuhkacs.org": 1, 1155 | "fanglizhi.info": 1, 1156 | "fdbox.com": 1, 1157 | "ozyoyo.com": 1, 1158 | "panluan.net": 1, 1159 | "shenzhoufilm.com": 1, 1160 | "cafepress.com": 1, 1161 | "debian.org": 1, 1162 | "worldcat.org": 1, 1163 | "dtiserv2.com": 1, 1164 | "mgstage.com": 1, 1165 | "xnxx.com": 1, 1166 | "co.hk": 1, 1167 | "twitpic.com": 1, 1168 | "path.com": 1, 1169 | "nicovideo.jp": 1, 1170 | "zeutch.com": 1, 1171 | "newchen.com": 1, 1172 | "lrfz.com": 1, 1173 | "freeopenvpn.com": 1, 1174 | "pbs.org": 1, 1175 | "myspace.com": 1, 1176 | "idaiwan.com": 1, 1177 | "foxsub.com": 1, 1178 | "tiffanyarment.com": 1, 1179 | "get-digital-help.com": 1, 1180 | "secretgarden.no": 1, 1181 | "mixx.com": 1, 1182 | "twibase.com": 1, 1183 | "uploaded.to": 1, 1184 | "ialmostlaugh.com": 1, 1185 | "tzangms.com": 1, 1186 | "thechinabeat.org": 1, 1187 | "co.tv": 1, 1188 | "jingpin.org": 1, 1189 | "facebook.com": 1, 1190 | "space-scape.com": 1, 1191 | "dadi360.com": 1, 1192 | "tomsc.com": 1, 1193 | "4sq.com": 1, 1194 | "myaudiocast.com": 1, 1195 | "friendfeed-media.com": 1, 1196 | "nodesnoop.com": 1, 1197 | "newyorktimes.com": 1, 1198 | "rxhj.net": 1, 1199 | "qienkuen.org": 1, 1200 | "uwants.net": 1, 1201 | "culture.tw": 1, 1202 | "identi.ca": 1, 1203 | "list.ly": 1, 1204 | "duckload.com": 1, 1205 | "videobam.com": 1, 1206 | "stoweboyd.com": 1, 1207 | "zkaip.com": 1, 1208 | "vpnpronet.com": 1, 1209 | "nps.gov": 1, 1210 | "wqyd.org": 1, 1211 | "togetter.com": 1, 1212 | "taipeisociety.org": 1, 1213 | "torproject.org": 1, 1214 | "tw": 1, 1215 | "gclooney.com": 1, 1216 | "hkej.com": 1, 1217 | "blog.de": 1, 1218 | "koolsolutions.com": 1, 1219 | "mmmca.com": 1, 1220 | "great-firewall.com": 1, 1221 | "chrlcg-hk.org": 1, 1222 | "movabletype.com": 1, 1223 | "immigration.gov.tw": 1, 1224 | "dw-world.de": 1, 1225 | "anchorfree.com": 1, 1226 | "gospelherald.com": 1, 1227 | "purevpn.com": 1, 1228 | "voacantonese.com": 1, 1229 | "djangosnippets.org": 1, 1230 | "hasaowall.com": 1, 1231 | "tweetwally.com": 1, 1232 | "pokerstrategy.com": 1, 1233 | "xing.com": 1, 1234 | "podictionary.com": 1, 1235 | "stickeraction.com": 1, 1236 | "derekhsu.homeip.net": 1, 1237 | "sis.xxx": 1, 1238 | "wzyboy.im": 1, 1239 | "buzzurl.jp": 1, 1240 | "twistar.cc": 1, 1241 | "taa-usa.org": 1, 1242 | "appledaily.com": 1, 1243 | "nysingtao.com": 1, 1244 | "tuxtraining.com": 1, 1245 | "cz.cc": 1, 1246 | "xbookcn.com": 1, 1247 | "witopia.net": 1, 1248 | "wenyunchao.com": 1, 1249 | "travelinlocal.com": 1, 1250 | "thetibetpost.com": 1, 1251 | "szbbs.net": 1, 1252 | "canadameet.com": 1, 1253 | "backpackers.com.tw": 1, 1254 | "uncyclopedia.info": 1, 1255 | "helloandroid.com": 1, 1256 | "greatfirewallofchina.net": 1, 1257 | "tibetanyouthcongress.org": 1, 1258 | "alexdong.com": 1, 1259 | "alabout.com": 1, 1260 | "sexandsubmission.com": 1, 1261 | "pbxes.org": 1, 1262 | "hutong9.net": 1, 1263 | "verybs.com": 1, 1264 | "blogspot.jp": 1, 1265 | "avidemux.org": 1, 1266 | "alkasir.com": 1, 1267 | "shinychan.com": 1, 1268 | "yasukuni.or.jp": 1, 1269 | "shenshou.org": 1, 1270 | "tube.com": 1, 1271 | "xizang-zhiye.org": 1, 1272 | "galenwu.com": 1, 1273 | "areca-backup.org": 1, 1274 | "bao.li": 1, 1275 | "multiupload.com": 1, 1276 | "greenvpn.net": 1, 1277 | "thedieline.com": 1, 1278 | "berlintwitterwall.com": 1, 1279 | "dfanning.com": 1, 1280 | "molihua.org": 1, 1281 | "hungerstrikeforaids.org": 1, 1282 | "npa.go.jp": 1, 1283 | "10musume.com": 1, 1284 | "wet123.com": 1, 1285 | "newlandmagazine.com.au": 1, 1286 | "gather.com": 1, 1287 | "bcchinese.net": 1, 1288 | "sesawe.net": 1, 1289 | "usejump.com": 1, 1290 | "funp.com": 1, 1291 | "mh4u.org": 1, 1292 | "wukangrui.net": 1, 1293 | "jeanyim.com": 1, 1294 | "chinaworker.info": 1, 1295 | "maxgif.com": 1, 1296 | "pixelqi.com": 1, 1297 | "sjum.cn": 1, 1298 | "mgoon.com": 1, 1299 | "cbsnews.com": 1, 1300 | "chengmingmag.com": 1, 1301 | "all-that-is-interesting.com": 1, 1302 | "soumo.info": 1, 1303 | "xpud.org": 1, 1304 | "naacoalition.org": 1, 1305 | "anyu.org": 1, 1306 | "latelinenews.com": 1, 1307 | "s1heng.com": 1, 1308 | "e-info.org.tw": 1, 1309 | "wenku.com": 1, 1310 | "mitbbs.com": 1, 1311 | "wiredbytes.com": 1, 1312 | "qxbbs.org": 1, 1313 | "yx51.net": 1, 1314 | "popyard.org": 1, 1315 | "state.gov": 1, 1316 | "yunchao.net": 1, 1317 | "dolc.de": 1, 1318 | "ironpython.net": 1, 1319 | "alasbarricadas.org": 1, 1320 | "parislemon.com": 1, 1321 | "oxid.it": 1, 1322 | "tweetmeme.com": 1, 1323 | "rerouted.org": 1, 1324 | "disp.cc": 1, 1325 | "aiweiweiblog.com": 1, 1326 | "123rf.com": 1, 1327 | "macrovpn.com": 1, 1328 | "badoo.com": 1, 1329 | "ukchinese.com": 1, 1330 | "mycould.com": 1, 1331 | "mixedmedialabs.com": 1, 1332 | "frommel.net": 1, 1333 | "mininova.org": 1, 1334 | "yegle.net": 1, 1335 | "teck.in": 1, 1336 | "bbsland.com": 1, 1337 | "blogtd.net": 1, 1338 | "sshtunnel.googlecode.com": 1, 1339 | "popularpages.net": 1, 1340 | "savevid.com": 1, 1341 | "pornoxo.com": 1, 1342 | "lsmkorean.org": 1, 1343 | "womensrightsofchina.org": 1, 1344 | "netme.cc": 1, 1345 | "squarespace.com": 1, 1346 | "hkgolden.com": 1, 1347 | "voatibetan.com": 1, 1348 | "ajaxplorer.info": 1, 1349 | "newtalk.tw": 1, 1350 | "shkspr.mobi": 1, 1351 | "politicalchina.org": 1, 1352 | "ddc.com.tw": 1, 1353 | "linuxreviews.org": 1, 1354 | "twisternow.com": 1, 1355 | "881903.com": 1, 1356 | "moby.to": 1, 1357 | "woopie.tv": 1, 1358 | "zdnet.com.tw": 1, 1359 | "nch.com.tw": 1, 1360 | "dojin.com": 1, 1361 | "ned.org": 1, 1362 | "ibiblio.org": 1, 1363 | "fakku.net": 1, 1364 | "wuala.com": 1, 1365 | "daxa.cn": 1, 1366 | "lightbox.com": 1, 1367 | "yhcw.net": 1, 1368 | "iphonix.fr": 1, 1369 | "twit2d.com": 1, 1370 | "netflix.com": 1, 1371 | "gutteruncensored.com": 1, 1372 | "hdtvb.net": 1, 1373 | "shapeservices.com": 1, 1374 | "westernwolves.com": 1, 1375 | "psiphon.ca": 1, 1376 | "rthk.org.hk": 1, 1377 | "washeng.net": 1, 1378 | "purepdf.com": 1, 1379 | "larsgeorge.com": 1, 1380 | "hloli.net": 1, 1381 | "twbbs.net.tw": 1, 1382 | "zgzcjj.net": 1, 1383 | "linkideo.com": 1, 1384 | "softether.co.jp": 1, 1385 | "phuquocservices.com": 1, 1386 | "drgan.net": 1, 1387 | "pcdiscuss.com": 1, 1388 | "sitemaps.org": 1, 1389 | "abc.pp.ru": 1, 1390 | "linuxtoy.org": 1, 1391 | "thedailywh.at": 1, 1392 | "addictedtocoffee.de": 1, 1393 | "getchu.com": 1, 1394 | "geekerhome.com": 1, 1395 | "greatroc.org": 1, 1396 | "alternate-tools.com": 1, 1397 | "marxist.com": 1, 1398 | "kanzhongguo.com": 1, 1399 | "greatroc.tw": 1, 1400 | "pk.com": 1, 1401 | "palmislife.com": 1, 1402 | "dlsite.com": 1, 1403 | "qooza.hk": 1, 1404 | "crossthewall.net": 1, 1405 | "twbbs.org": 1, 1406 | "xinshijue.com": 1, 1407 | "shvoong.com": 1, 1408 | "woopie.jp": 1, 1409 | "hqcdp.org": 1, 1410 | "freenewscn.com": 1, 1411 | "hkjp.org": 1, 1412 | "stoneip.info": 1, 1413 | "googleusercontent.com": 1, 1414 | "amazon.com": 1, 1415 | "old-cat.net": 1, 1416 | "shadow.ma": 1, 1417 | "instagram.com": 1, 1418 | "ht.ly": 1, 1419 | "sydneytoday.com": 1, 1420 | "olympicwatch.org": 1, 1421 | "whippedass.com": 1, 1422 | "tafaward.com": 1, 1423 | "falunart.org": 1, 1424 | "unknownspace.org": 1, 1425 | "tweetrans.com": 1, 1426 | "jyxf.net": 1, 1427 | "vmixcore.com": 1, 1428 | "uushare.com": 1, 1429 | "wikileaks.de": 1, 1430 | "flickrhivemind.net": 1, 1431 | "sis001.com": 1, 1432 | "workatruna.com": 1, 1433 | "memedia.cn": 1, 1434 | "gpass1.com": 1, 1435 | "megarotic.com": 1, 1436 | "pikchur.com": 1, 1437 | "dev102.com": 1, 1438 | "zengjinyan.org": 1, 1439 | "centralnation.com": 1, 1440 | "puffinbrowser.com": 1, 1441 | "pandora.tv": 1, 1442 | "amiblockedornot.com": 1, 1443 | "zhinengluyou.com": 1, 1444 | "bannedbook.org": 1, 1445 | "chinesenewsnet.com": 1, 1446 | "nokogiri.org": 1, 1447 | "wolfax.com": 1, 1448 | "ifcss.org": 1, 1449 | "pwned.com": 1, 1450 | "thumbzilla.com": 1, 1451 | "icerocket.com": 1, 1452 | "koornk.com": 1, 1453 | "leecheukyan.org": 1, 1454 | "theqii.info": 1, 1455 | "blip.tv": 1, 1456 | "tweetbackup.com": 1, 1457 | "updatestar.com": 1, 1458 | "gzone-anime.info": 1, 1459 | "1984bbs.org": 1, 1460 | "penthouse.com": 1, 1461 | "ff.im": 1, 1462 | "uploadstation.com": 1, 1463 | "expofutures.com": 1, 1464 | "alliance.org.hk": 1, 1465 | "wearn.com": 1, 1466 | "efcc.org.hk": 1, 1467 | "zattoo.com": 1, 1468 | "askynz.net": 1, 1469 | "zaobao.com.sg": 1, 1470 | "heartyit.com": 1, 1471 | "qixianglu.cn": 1, 1472 | "bettween.com": 1, 1473 | "gun-world.net": 1, 1474 | "kenengba.com": 1, 1475 | "iphone-dev.org": 1, 1476 | "crackle.com": 1, 1477 | "twftp.org": 1, 1478 | "zlib.net": 1, 1479 | "multiply.com": 1, 1480 | "lipuman.com": 1, 1481 | "monlamit.org": 1, 1482 | "porntube.com": 1, 1483 | "tunein.com": 1, 1484 | "uwants.com": 1, 1485 | "gotw.ca": 1, 1486 | "tumutanzi.com": 1, 1487 | "opera-mini.net": 1, 1488 | "dizhidizhi.com": 1, 1489 | "pbwiki.com": 1, 1490 | "ruyiseek.com": 1, 1491 | "docstoc.com": 1, 1492 | "navigeaters.com": 1, 1493 | "eltondisney.com": 1, 1494 | "free.fr": 1, 1495 | "1bao.org": 1, 1496 | "extremetube.com": 1, 1497 | "yeelou.com": 1, 1498 | "corumcollege.com": 1, 1499 | "merit-times.com.tw": 1, 1500 | "exblog.co.jp": 1, 1501 | "hkheadline.com": 1, 1502 | "uocn.org": 1, 1503 | "wikileaks.org": 1, 1504 | "taiwanyes.com": 1, 1505 | "chinesepen.org": 1, 1506 | "itaboo.info": 1, 1507 | "thisiswhyyouarefat.com": 1, 1508 | "martincartoons.com": 1, 1509 | "theinternetwishlist.com": 1, 1510 | "twitgether.com": 1, 1511 | "hecaitou.net": 1, 1512 | "collateralmurder.com": 1, 1513 | "baixing.me": 1, 1514 | "lesscss.org": 1, 1515 | "uk.to": 1, 1516 | "wikisource.org": 1, 1517 | "nanyang.com": 1, 1518 | "wikia.com": 1, 1519 | "michaelanti.com": 1, 1520 | "2shared.com": 1, 1521 | "chinagreenparty.org": 1, 1522 | "fireofliberty.org": 1, 1523 | "isohunt.com": 1, 1524 | "ibtimes.com": 1, 1525 | "meirixiaochao.com": 1, 1526 | "rutube.ru": 1, 1527 | "erepublik.com": 1, 1528 | "briefdream.com": 1, 1529 | "vocn.tv": 1, 1530 | "ironicsoftware.com": 1, 1531 | "htxt.it": 1, 1532 | "mayimayi.com": 1, 1533 | "businesstimes.com.cn": 1, 1534 | "dayoneapp.com": 1, 1535 | "beijing1989.com": 1, 1536 | "kingdomsalvation.org": 1, 1537 | "vpnbook.com": 1, 1538 | "ping.fm": 1, 1539 | "pentalogic.net": 1, 1540 | "wan-press.org": 1, 1541 | "hudatoriq.web.id": 1, 1542 | "url.com.tw": 1, 1543 | "duihua.org": 1, 1544 | "bowenpress.com": 1, 1545 | "fotop.net": 1, 1546 | "liveleak.com": 1, 1547 | "tvb.com": 1, 1548 | "ulike.net": 1, 1549 | "365singles.com.ar": 1, 1550 | "calebelston.com": 1, 1551 | "turbobit.net": 1, 1552 | "liujianshu.com": 1, 1553 | "daylife.com": 1, 1554 | "tuitui.info": 1, 1555 | "allinfo.com": 1, 1556 | "lsd.org.hk": 1, 1557 | "mingjinglishi.com": 1, 1558 | "qx.net": 1, 1559 | "wepn.info": 1, 1560 | "tenacy.com": 1, 1561 | "parade.com": 1, 1562 | "mobile01.com": 1, 1563 | "cynscribe.com": 1, 1564 | "lockestek.com": 1, 1565 | "dtic.mil": 1, 1566 | "jinhai.de": 1, 1567 | "x-art.com": 1, 1568 | "atchinese.com": 1, 1569 | "gazotube.com": 1, 1570 | "nownews.com": 1, 1571 | "64wiki.com": 1, 1572 | "bloglovin.com": 1, 1573 | "v-state.org": 1, 1574 | "popyard.com": 1, 1575 | "easyweb.hk": 1, 1576 | "oiktv.com": 1, 1577 | "ytht.net": 1, 1578 | "willw.net": 1, 1579 | "voy.com": 1, 1580 | "chinahush.com": 1, 1581 | "eyespirit.info": 1, 1582 | "wangjinbo.org": 1, 1583 | "dowei.org": 1, 1584 | "tianhuayuan.com": 1, 1585 | "ncol.com": 1, 1586 | "goagent.googlecode.com": 1, 1587 | "orzdream.com": 1, 1588 | "fangbinxing.com": 1, 1589 | "gongminliliang.com": 1, 1590 | "heywire.com": 1, 1591 | "cdjp.org": 1, 1592 | "code1984.com": 1, 1593 | "gzm.tv": 1, 1594 | "sharebee.com": 1, 1595 | "youthbao.com": 1, 1596 | "chinadigitaltimes.net": 1, 1597 | "tagwalk.com": 1, 1598 | "chinagfw.org": 1, 1599 | "wenxuecity.com": 1, 1600 | "veoh.com": 1, 1601 | "dongyangjing.com": 1, 1602 | "lizhizhuangbi.com": 1, 1603 | "tangben.com": 1, 1604 | "logbot.net": 1, 1605 | "fc2blog.net": 1, 1606 | "techlifeweb.com": 1, 1607 | "junefourth-20.net": 1, 1608 | "seapuff.com": 1, 1609 | "blogspot.hk": 1, 1610 | "waikeung.org": 1, 1611 | "jinbushe.org": 1, 1612 | "my-proxy.com": 1, 1613 | "kun.im": 1, 1614 | "shodanhq.com": 1, 1615 | "kimy.com.tw": 1, 1616 | "fflick.com": 1, 1617 | "sino-monthly.com": 1, 1618 | "slutload.com": 1, 1619 | "postadult.com": 1, 1620 | "falundafa.org": 1, 1621 | "ifttt.com": 1, 1622 | "yi.org": 1, 1623 | "tube8.com": 1, 1624 | "epochtimes.ie": 1, 1625 | "opnir.com": 1, 1626 | "marguerite.su": 1, 1627 | "chenpokong.com": 1, 1628 | "2-hand.info": 1, 1629 | "dit-inc.us": 1, 1630 | "wikibooks.org": 1, 1631 | "longhair.hk": 1, 1632 | "dxiong.com": 1, 1633 | "plixi.com": 1, 1634 | "ntu.edu.tw": 1, 1635 | "weekmag.info": 1, 1636 | "img.ly": 1, 1637 | "tuanzt.com": 1, 1638 | "bit.ly": 1, 1639 | "pornhub.com": 1, 1640 | "mihua.org": 1, 1641 | "ck101.com": 1, 1642 | "wikileaks.eu": 1, 1643 | "wallornot.org": 1, 1644 | "softether.org": 1, 1645 | "joeyrobert.org": 1, 1646 | "twapperkeeper.com": 1, 1647 | "rushbee.com": 1, 1648 | "zoho.com": 1, 1649 | "sendspace.com": 1, 1650 | "proxomitron.info": 1, 1651 | "allmovie.com": 1, 1652 | "google.com": 1, 1653 | "badassjs.com": 1, 1654 | "howtoforge.com": 1, 1655 | "fanqiangyakexi.net": 1, 1656 | "googlevideo.com": 1, 1657 | "torvpn.com": 1, 1658 | "qvodzy.org": 1, 1659 | "hacken.cc": 1, 1660 | "ismprofessional.net": 1, 1661 | "presentationzen.com": 1, 1662 | "huping.net": 1, 1663 | "velkaepocha.sk": 1, 1664 | "chinamule.com": 1, 1665 | "trulyergonomic.com": 1, 1666 | "atnext.com": 1, 1667 | "nccwatch.org.tw": 1, 1668 | "globalmuseumoncommunism.org": 1, 1669 | "streamingthe.net": 1, 1670 | "qanote.com": 1, 1671 | "falunhr.org": 1, 1672 | "thehungrydudes.com": 1, 1673 | "wordpress.com": 1, 1674 | "nexttv.com.tw": 1, 1675 | "discuss.com.hk": 1, 1676 | "usmc.mil": 1, 1677 | "basetimesheightdividedby2.com": 1, 1678 | "oauth.net": 1, 1679 | "wetpussygames.com": 1, 1680 | "zshare.net": 1, 1681 | "89-64.org": 1, 1682 | "linglingfa.com": 1, 1683 | "juziyue.com": 1, 1684 | "ruanyifeng.com": 1, 1685 | "cnyes.com": 1, 1686 | "aiph.net": 1, 1687 | "skybet.com": 1, 1688 | "vatn.org": 1, 1689 | "hypeshell.com": 1, 1690 | "megavideo.com": 1, 1691 | "rojo.com": 1, 1692 | "tibetfund.org": 1, 1693 | "awardwinningfjords.com": 1, 1694 | "falundafamuseum.org": 1, 1695 | "jiepang.com": 1, 1696 | "eulam.com": 1, 1697 | "pchome.com.tw": 1, 1698 | "thehun.net": 1, 1699 | "tistory.com": 1, 1700 | "blingblingsquad.net": 1, 1701 | "nakido.com": 1, 1702 | "fzh999.net": 1, 1703 | "creaders.net": 1, 1704 | "hkbf.org": 1, 1705 | "wqlhw.com": 1, 1706 | "overlapr.com": 1, 1707 | "us.to": 1, 1708 | "tl.gd": 1, 1709 | "ourdearamy.com": 1, 1710 | "epochtimes.fr": 1, 1711 | "google.com.hk": 1, 1712 | "wapedia.mobi": 1, 1713 | "allaboutalpha.com": 1, 1714 | "graylog2.org": 1, 1715 | "metrolife.ca": 1, 1716 | "gigporno.ru": 1, 1717 | "moviefap.com": 1, 1718 | "twtkr.com": 1, 1719 | "rferl.org": 1, 1720 | "shwchurch3.com": 1, 1721 | "sysadmin1138.net": 1, 1722 | "electionsmeter.com": 1, 1723 | "cyberctm.com": 1, 1724 | "rsf-chinese.org": 1, 1725 | "sparrowmailapp.com": 1, 1726 | "sex.com": 1, 1727 | "xuzhuoer.com": 1, 1728 | "xmovies.com": 1, 1729 | "duoweitimes.com": 1, 1730 | "rapidshare8.com": 1, 1731 | "chingcheong.com": 1, 1732 | "xhamster.com": 1, 1733 | "moegirl.org": 1, 1734 | "freemoren.com": 1, 1735 | "pornbase.org": 1, 1736 | "danwei.org": 1, 1737 | "greenparty.org.tw": 1, 1738 | "van698.com": 1, 1739 | "mlcool.com": 1, 1740 | "uighurbiz.net": 1, 1741 | "omgili.com": 1, 1742 | "blogspot.in": 1, 1743 | "sharpdaily.hk": 1, 1744 | "jiehua.cz": 1, 1745 | "livevideo.com": 1, 1746 | "weblagu.com": 1, 1747 | "nlfreevpn.com": 1, 1748 | "zyzc9.com": 1, 1749 | "wiredpen.com": 1, 1750 | "chinasoul.org": 1, 1751 | "sopcast.org": 1, 1752 | "mysinablog.com": 1, 1753 | "sogrady.me": 1, 1754 | "teashark.com": 1, 1755 | "etizer.org": 1, 1756 | "westca.com": 1, 1757 | "forums-free.com": 1, 1758 | "oikos.com.tw": 1, 1759 | "315lz.com": 1, 1760 | "letscorp.net": 1, 1761 | "powerapple.com": 1, 1762 | "hk32168.com": 1, 1763 | "51.ca": 1, 1764 | "salvation.org.hk": 1, 1765 | "rfi.fr": 1, 1766 | "getiton.com": 1, 1767 | "awflasher.com": 1, 1768 | "getlantern.org": 1, 1769 | "i2runner.com": 1, 1770 | "hidecloud.com": 1, 1771 | "gcpnews.com": 1, 1772 | "marxist.net": 1, 1773 | "vegorpedersen.com": 1, 1774 | "twifan.com": 1, 1775 | "tweetphoto.com": 1, 1776 | "ovi.com": 1, 1777 | "cubicle17.com": 1, 1778 | "greatfire.org": 1, 1779 | "gabocorp.com": 1, 1780 | "tibetonline.com": 1, 1781 | "change.org": 1, 1782 | "turbotwitter.com": 1, 1783 | "chinaaid.me": 1, 1784 | "thisav.com": 1, 1785 | "free-ssh.com": 1, 1786 | "tubewolf.com": 1, 1787 | "gfw.org.ua": 1, 1788 | "chinesedailynews.com": 1, 1789 | "viki.com": 1, 1790 | "ecministry.net": 1, 1791 | "mooo.com": 1, 1792 | "sinoquebec.com": 1, 1793 | "yahoo.co.jp": 1, 1794 | "slandr.net": 1, 1795 | "favorious.com": 1, 1796 | "rhcloud.com": 1, 1797 | "sthoo.com": 1, 1798 | "softwarebychuck.com": 1, 1799 | "illusionfactory.com": 1, 1800 | "efksoft.com": 1, 1801 | "staticflickr.com": 1, 1802 | "freenet-china.org": 1, 1803 | "cams.com": 1, 1804 | "21andy.com": 1, 1805 | "megabyet.net": 1, 1806 | "greatfirewall.biz": 1, 1807 | "islam.org.hk": 1, 1808 | "tiananmenmother.org": 1, 1809 | "mirrorbooks.com": 1, 1810 | "chinageeks.org": 1, 1811 | "dongtaiwang.com": 1, 1812 | "twimg.com": 1, 1813 | "hardsextube.com": 1, 1814 | "soundcloud.com": 1, 1815 | "4bluestones.biz": 1, 1816 | "tweepguide.com": 1, 1817 | "twitlonger.com": 1, 1818 | "revleft.com": 1, 1819 | "october-review.org": 1, 1820 | "isunaffairs.com": 1, 1821 | "codeboxapp.com": 1, 1822 | "zinio.com": 1, 1823 | "snaptu.com": 1, 1824 | "fc2china.com": 1, 1825 | "sendoid.com": 1, 1826 | "giganews.com": 1, 1827 | "huaglad.com": 1, 1828 | "youthwant.com.tw": 1, 1829 | "eventful.com": 1, 1830 | "yeeyi.com": 1, 1831 | "istef.info": 1, 1832 | "playboy.com": 1, 1833 | "youjizz.com": 1, 1834 | "thelius.org": 1, 1835 | "imkev.com": 1, 1836 | "websitepulse.com": 1, 1837 | "listorious.com": 1, 1838 | "open.com.hk": 1, 1839 | "youversion.com": 1, 1840 | "rlwlw.com": 1, 1841 | "twitcause.com": 1, 1842 | "flickr.com": 1, 1843 | "ajsands.com": 1, 1844 | "waiwaier.com": 1, 1845 | "site90.net": 1, 1846 | "hootsuite.com": 1, 1847 | "dongtaiwang.net": 1, 1848 | "telecomspace.com": 1, 1849 | "delcamp.net": 1, 1850 | "dalailama.ru": 1, 1851 | "vpnpop.com": 1, 1852 | "301works.org": 1, 1853 | "chinaeweekly.com": 1, 1854 | "youpai.org": 1, 1855 | "mpettis.com": 1, 1856 | "nokola.com": 1, 1857 | "tsctv.net": 1, 1858 | "aol.ca": 1, 1859 | "tsunagarumon.com": 1, 1860 | "hinet.net": 1, 1861 | "cherrysave.com": 1, 1862 | "mondex.org": 1, 1863 | "dwnews.com": 1, 1864 | "hjclub.info": 1, 1865 | "h1n1china.org": 1, 1866 | "raidcall.com.tw": 1, 1867 | "goofind.com": 1, 1868 | "weiming.info": 1, 1869 | "hotspotshield.com": 1, 1870 | "sopcast.com": 1, 1871 | "aobo.com.au": 1, 1872 | "fangongheike.com": 1, 1873 | "i2p2.de": 1, 1874 | "kingstone.com.tw": 1, 1875 | "proxifier.com": 1, 1876 | "twilog.org": 1, 1877 | "oursteps.com.au": 1, 1878 | "twittermail.com": 1, 1879 | "reflectivecode.com": 1, 1880 | "freechal.com": 1, 1881 | "fail.hk": 1, 1882 | "tt1069.com": 1, 1883 | "6park.com": 1, 1884 | "piring.com": 1, 1885 | "internetpopculture.com": 1, 1886 | "tuite.googlecode.com": 1, 1887 | "ub0.cc": 1, 1888 | "zootool.com": 1, 1889 | "huaxin.ph": 1, 1890 | "melon-peach.com": 1, 1891 | "d0z.net": 1, 1892 | "cenci.tk": 1, 1893 | "tianzhu.org": 1, 1894 | "hkptu.org": 1, 1895 | "gamer.com.tw": 1, 1896 | "wellplacedpixels.com": 1, 1897 | "recordhistory.org": 1, 1898 | "exblog.jp": 1, 1899 | "tsquare.tv": 1, 1900 | "renminbao.com": 1, 1901 | "brucewang.net": 1, 1902 | "sesawe.org": 1, 1903 | "vincnd.com": 1, 1904 | "edoors.com": 1, 1905 | "southnews.com.tw": 1, 1906 | "etaiwannews.com": 1, 1907 | "malaysiakini.com": 1, 1908 | "udn.com": 1, 1909 | "am730.com.hk": 1, 1910 | "wexiaobo.org": 1, 1911 | "unicode.org": 1, 1912 | "soifind.com": 1, 1913 | "favstar.fm": 1, 1914 | "zomobo.net": 1, 1915 | "braumeister.org": 1, 1916 | "sammyjs.org": 1, 1917 | "wujieliulan.com": 1, 1918 | "revver.com": 1, 1919 | "twitturly.com": 1, 1920 | "getsocialscope.com": 1, 1921 | "compython.net": 1, 1922 | "webbang.net": 1, 1923 | "citizensradio.org": 1, 1924 | "gowalla.com": 1, 1925 | "paper.li": 1, 1926 | "dtiblog.com": 1, 1927 | "sejie.com": 1, 1928 | "meteorshowersonline.com": 1, 1929 | "faydao.com": 1, 1930 | "trialofccp.org": 1, 1931 | "comedycentral.com": 1, 1932 | "linksalpha.com": 1, 1933 | "zmw.cn": 1, 1934 | "panoramio.com": 1, 1935 | "tweetmylast.fm": 1, 1936 | "blogspot.fr": 1, 1937 | "6v6dota.com": 1, 1938 | "omnitalk.com": 1, 1939 | "idlcoyote.com": 1, 1940 | "ning.com": 1, 1941 | "libertytimes.com.tw": 1, 1942 | "democrats.org": 1, 1943 | "orchidbbs.com": 1, 1944 | "china21.org": 1, 1945 | "bbcchinese.com": 1, 1946 | "af.mil": 1, 1947 | "pin6.com": 1, 1948 | "sankaizok.com": 1, 1949 | "feer.com": 1, 1950 | "avaaz.org": 1, 1951 | "bloomfortune.com": 1, 1952 | "sfileydy.com": 1, 1953 | "nanyangpost.com": 1, 1954 | "python.com": 1, 1955 | "sandnoble.com": 1, 1956 | "read100.com": 1, 1957 | "classicalguitarblog.net": 1, 1958 | "buugaa.com": 1, 1959 | "amnestyusa.org": 1, 1960 | "thereallove.kr": 1, 1961 | "antiwave.net": 1, 1962 | "fawanghuihui.org": 1, 1963 | "x-wall.org": 1, 1964 | "daolan.net": 1, 1965 | "gfwinterceptor.googlecode.com": 1, 1966 | "taiwanus.net": 1, 1967 | "seraph.me": 1, 1968 | "szetowah.org.hk": 1, 1969 | "yuanming.net": 1, 1970 | "geekmanuals.com": 1, 1971 | "guancha.org": 1, 1972 | "chinayuanmin.org": 1, 1973 | "nga.mil": 1, 1974 | "my903.com": 1, 1975 | "archive.org": 1, 1976 | "tamiaode.tk": 1, 1977 | "netlog.com": 1, 1978 | "onmoon.com": 1, 1979 | "jiaoyou8.com": 1, 1980 | "twibble.de": 1, 1981 | "gaymap.cc": 1, 1982 | "xinhuanet.org": 1, 1983 | "yorkbbs.ca": 1, 1984 | "scribd.com": 1, 1985 | "blogspot.com": 1, 1986 | "taragana.com": 1, 1987 | "kl.am": 1, 1988 | "rti.org.tw": 1, 1989 | "relaxbbs.com": 1, 1990 | "cellulo.info": 1, 1991 | "owind.com": 1, 1992 | "ucam.org": 1, 1993 | "phonegap.com": 1, 1994 | "navy.mil": 1, 1995 | "tibet.net": 1, 1996 | "uncyclomedia.org": 1, 1997 | "vpncup.com": 1, 1998 | "oopsforum.com": 1, 1999 | "orientaldaily.com.my": 1, 2000 | "hkbc.net": 1, 2001 | "youtube-nocookie.com": 1, 2002 | "winwhispers.info": 1, 2003 | "savetibet.org": 1, 2004 | "sohfrance.org": 1, 2005 | "thegatesnotes.com": 1, 2006 | "netcolony.com": 1, 2007 | "kechara.com": 1, 2008 | "break.com": 1, 2009 | "cenews.eu": 1, 2010 | "xxxx.com.au": 1, 2011 | "muouju.com": 1, 2012 | "h-china.org": 1, 2013 | "voanews.com": 1, 2014 | "proxyroad.com": 1, 2015 | "tttan.com": 1, 2016 | "dpp.org.tw": 1, 2017 | "gdbt.net": 1, 2018 | "hnjhj.com": 1, 2019 | "thkphoto.com": 1, 2020 | "la-forum.org": 1, 2021 | "weiquanwang.org": 1, 2022 | "nabble.com": 1, 2023 | "tweetedtimes.com": 1, 2024 | "okayfreedom.com": 1, 2025 | "twimbow.com": 1, 2026 | "cclife.org": 1, 2027 | "zhenlibu.info": 1, 2028 | "hkday.net": 1, 2029 | "1984bbs.com": 1, 2030 | "iphonehacks.com": 1, 2031 | "atebits.com": 1, 2032 | "solozorro.tk": 1, 2033 | "justtristan.com": 1, 2034 | "pmates.com": 1, 2035 | "waigaobu.com": 1, 2036 | "naol.ca": 1, 2037 | "adultfriendfinder.com": 1, 2038 | "collateralmurder.org": 1, 2039 | "twitbrowser.net": 1, 2040 | "jbtalks.my": 1, 2041 | "mediafire.com": 1, 2042 | "theatrum-belli.com": 1, 2043 | "geocities.co.jp": 1, 2044 | "listentoyoutube.com": 1, 2045 | "somee.com": 1, 2046 | "yahoo.com.hk": 1, 2047 | "sexhuang.com": 1, 2048 | "stonegames.net": 1, 2049 | "dzze.com": 1, 2050 | "python.com.tw": 1, 2051 | "throughnightsfire.com": 1, 2052 | "liuxiaotong.com": 1, 2053 | "blogs.com": 1, 2054 | "artsy.net": 1, 2055 | "mashable.com": 1, 2056 | "axureformac.com": 1, 2057 | "64tianwang.com": 1, 2058 | "domain.club.tw": 1, 2059 | "imageflea.com": 1, 2060 | "wangruoshui.net": 1, 2061 | "dougscripts.com": 1, 2062 | "yogichen.org": 1, 2063 | "bewww.net": 1, 2064 | "gongm.in": 1, 2065 | "shenyunperformingarts.org": 1, 2066 | "pekingduck.org": 1, 2067 | "radiotime.com": 1, 2068 | "cdp1998.org": 1, 2069 | "kwongwah.com.my": 1, 2070 | "blinw.com": 1, 2071 | "atj.org.tw": 1, 2072 | "aenhancers.com": 1, 2073 | "ytimg.com": 1, 2074 | "freevpn.nl": 1, 2075 | "netfirms.com": 1, 2076 | "windowsphoneme.com": 1, 2077 | "xiaochuncnjp.com": 1, 2078 | "chinainterimgov.org": 1, 2079 | "xysblogs.org": 1, 2080 | "epochtimes-bg.com": 1, 2081 | "samair.ru": 1, 2082 | "taiwankiss.com": 1, 2083 | "hotpot.hk": 1, 2084 | "books.com.tw": 1, 2085 | "proxlet.com": 1, 2086 | "gyalwarinpoche.com": 1, 2087 | "focusvpn.com": 1, 2088 | "dphk.org": 1, 2089 | "oulove.org": 1, 2090 | "filefactory.com": 1, 2091 | "ifanr.com": 1, 2092 | "urlborg.com": 1, 2093 | "minzhuzhongguo.org": 1, 2094 | "fb.me": 1, 2095 | "icij.org": 1, 2096 | "twindexx.com": 1, 2097 | "twitreferral.com": 1, 2098 | "linuxconfig.org": 1, 2099 | "cts.com.tw": 1, 2100 | "sanmin.com.tw": 1, 2101 | "logmike.com": 1, 2102 | "ultraxs.com": 1, 2103 | "highrockmedia.com": 1, 2104 | "theappleblog.com": 1, 2105 | "taiwannews.com.tw": 1, 2106 | "twa.sh": 1, 2107 | "tacem.org": 1, 2108 | "percy.in": 1, 2109 | "apigee.com": 1, 2110 | "itshidden.com": 1, 2111 | "birdhouseapp.com": 1, 2112 | "dongde.com": 1, 2113 | "mefeedia.com": 1, 2114 | "embr.in": 1, 2115 | "clb.org.hk": 1, 2116 | "chaturbate.com": 1, 2117 | "strongvpn.com": 1, 2118 | "asianwomensfilm.de": 1, 2119 | "bugclub.org": 1, 2120 | "xvedios.com": 1, 2121 | "mpinews.com": 1, 2122 | "x365x.com": 1, 2123 | "arctosia.com": 1, 2124 | "tiantibooks.org": 1, 2125 | "worstthingieverate.com": 1, 2126 | "kodingen.com": 1, 2127 | "twyac.org": 1, 2128 | "shizhao.org": 1, 2129 | "budaedu.org": 1, 2130 | "rcinet.ca": 1, 2131 | "soh.tw": 1, 2132 | "date.fm": 1, 2133 | "izihost.org": 1, 2134 | "threatchaos.com": 1, 2135 | "paper-replika.com": 1, 2136 | "mychat.to": 1, 2137 | "farwestchina.com": 1, 2138 | "inxian.com": 1, 2139 | "xxbbx.com": 1, 2140 | "taiwantt.org.tw": 1, 2141 | "voa.mobi": 1, 2142 | "huaren.us": 1, 2143 | "twblogger.com": 1, 2144 | "penchinese.com": 1, 2145 | "everyday-carry.com": 1, 2146 | "hotfile.com": 1, 2147 | "sitetag.us": 1, 2148 | "twaud.io": 1, 2149 | "singtao.com": 1, 2150 | "chinainperspective.org": 1, 2151 | "soundofhope.org": 1, 2152 | "toonel.net": 1, 2153 | "city9x.com": 1, 2154 | "ufreevpn.com": 1, 2155 | "sufeng.org": 1, 2156 | "veempiire.com": 1, 2157 | "delicious.com": 1, 2158 | "thebcomplex.com": 1, 2159 | "noypf.com": 1, 2160 | "radiovaticana.org": 1, 2161 | "igfw.net": 1, 2162 | "chandoo.org": 1, 2163 | "tomayko.com": 1, 2164 | "tonyyan.net": 1, 2165 | "ucdc1998.org": 1, 2166 | "hkjc.com": 1, 2167 | "xiaoma.org": 1, 2168 | "so-ga.net": 1, 2169 | "sapikachu.net": 1, 2170 | "pacificpoker.com": 1, 2171 | "unpo.org": 1, 2172 | "sitebro.tw": 1, 2173 | "blockcn.com": 1, 2174 | "prayforchina.net": 1, 2175 | "gmhz.org": 1, 2176 | "spotify.com": 1, 2177 | "gunsamerica.com": 1, 2178 | "openwebster.com": 1, 2179 | "liu.lu": 1, 2180 | "muselinks.co.jp": 1, 2181 | "36rain.com": 1, 2182 | "peacefire.org": 1, 2183 | "cytode.us": 1, 2184 | "yahoo.com": 1, 2185 | "hongmeimei.com": 1, 2186 | "waffle1999.com": 1, 2187 | "globalvoicesonline.org": 1, 2188 | "vft.com.tw": 1, 2189 | "huluim.com": 1, 2190 | "livestation.com": 1, 2191 | "onmoon.net": 1, 2192 | "pixnet.in": 1, 2193 | "nanzao.com": 1, 2194 | "sinica.edu.tw": 1, 2195 | "wezone.net": 1, 2196 | "cochina.org": 1, 2197 | "astonmartinnews.com": 1, 2198 | "baywords.com": 1, 2199 | "twitoaster.com": 1, 2200 | "s135.com": 1, 2201 | "iredmail.org": 1, 2202 | "fring.com": 1, 2203 | "spankwire.com": 1, 2204 | "nytco.com": 1, 2205 | "fofg.org": 1, 2206 | "qtrac.eu": 1, 2207 | "proxypy.net": 1, 2208 | "tweepml.org": 1, 2209 | "izles.net": 1, 2210 | "cactusvpn.com": 1, 2211 | "blogger.com": 1, 2212 | "have8.com": 1, 2213 | "retweetrank.com": 1, 2214 | "mychinamyhome.com": 1, 2215 | "hellotxt.com": 1, 2216 | "chrispederick.net": 1, 2217 | "goodreads.com": 1, 2218 | "cjb.net": 1, 2219 | "andfaraway.net": 1, 2220 | "cdp2006.org": 1, 2221 | "youthnetradio.org": 1, 2222 | "forum4hk.com": 1, 2223 | "chinalawandpolicy.com": 1, 2224 | "civisec.org": 1, 2225 | "junauza.com": 1, 2226 | "mihk.hk": 1, 2227 | "palm.com": 1, 2228 | "student.tw": 1, 2229 | "svwind.com": 1, 2230 | "chrlawyers.hk": 1, 2231 | "pinoy-n.com": 1, 2232 | "girlbanker.com": 1, 2233 | "!--isaacmao.com": 1, 2234 | "usacn.com": 1, 2235 | "privateinternetaccess.com": 1, 2236 | "hgseav.com": 1, 2237 | "advertfan.com": 1, 2238 | "xiaohexie.com": 1, 2239 | "lazarsearlymusic.com": 1, 2240 | "chinesetalks.net": 1, 2241 | "bloomberg.com": 1, 2242 | "fleshbot.com": 1, 2243 | "higfw.com": 1, 2244 | "vinniev.com": 1, 2245 | "justin.tv": 1, 2246 | "adultkeep.net": 1, 2247 | "jieshibaobao.com": 1, 2248 | "bfsh.hk": 1, 2249 | "loiclemeur.com": 1, 2250 | "bfnn.org": 1, 2251 | "faiththedog.info": 1, 2252 | "gtap.googlecode.com": 1, 2253 | "picidae.net": 1, 2254 | "epochweekly.com": 1, 2255 | "free-gate.org": 1, 2256 | "freelotto.com": 1, 2257 | "himemix.com": 1, 2258 | "tweetree.com": 1, 2259 | "rfachina.com": 1, 2260 | "truthcn.com": 1, 2261 | "xcity.jp": 1, 2262 | "newsancai.com": 1, 2263 | "caochangqing.com": 1, 2264 | "liberal.org.hk": 1, 2265 | "mrtweet.com": 1, 2266 | "gamez.com.tw": 1, 2267 | "qi-gong.me": 1, 2268 | "steel-storm.com": 1, 2269 | "turntable.fm": 1, 2270 | "couchdbwiki.com": 1, 2271 | "flecheinthepeche.fr": 1, 2272 | "swift-tools.net": 1, 2273 | "mmaaxx.com": 1, 2274 | "fdc89.jp": 1, 2275 | "emory.edu": 1, 2276 | "eic-av.com": 1, 2277 | "topsy.com": 1, 2278 | "kyohk.net": 1, 2279 | "pose.com": 1, 2280 | "neolee.cn": 1, 2281 | "edicypages.com": 1, 2282 | "designerol.com": 1, 2283 | "knowledgerush.com": 1, 2284 | "ebookee.com": 1, 2285 | "so-news.com": 1, 2286 | "mthruf.com": 1, 2287 | "getfoxyproxy.org": 1, 2288 | "pathtosharepoint.com": 1, 2289 | "logiqx.com": 1, 2290 | "doxygen.org": 1, 2291 | "say2.info": 1, 2292 | "deutsche-welle.de": 1, 2293 | "dabr.mobi": 1, 2294 | "catch22.net": 1, 2295 | "digitalnomadsproject.org": 1, 2296 | "github.com": 1, 2297 | "blogspot.de": 1, 2298 | "pcdvd.com.tw": 1, 2299 | "getyouram.com": 1, 2300 | "compileheart.com": 1, 2301 | "hidden-advent.org": 1, 2302 | "megaporn.com": 1, 2303 | "hougaige.com": 1, 2304 | "aboutgfw.com": 1, 2305 | "comefromchina.com": 1, 2306 | "e-spacy.com": 1, 2307 | "funf.tw": 1, 2308 | "worldjournal.com": 1, 2309 | "olumpo.com": 1, 2310 | "finler.net": 1, 2311 | "zoozle.net": 1, 2312 | "vcf-online.org": 1, 2313 | "wikimedia.org.mo": 1, 2314 | "de-sci.org": 1, 2315 | "stuffimreading.net": 1, 2316 | "state168.com": 1, 2317 | "cantonese.asia": 1, 2318 | "fzh999.com": 1, 2319 | "ipobar.com": 1, 2320 | "topshareware.com": 1, 2321 | "pokerstars.com": 1, 2322 | "bloomberg.cn": 1, 2323 | "qstatus.com": 1, 2324 | "muzi.com": 1, 2325 | "syx86.cn": 1, 2326 | "changp.com": 1, 2327 | "techparaiso.com": 1, 2328 | "posterous.com": 1, 2329 | "interfaceaddiction.com": 1, 2330 | "cnitter.com": 1, 2331 | "chinaaid.net": 1, 2332 | "fscked.org": 1, 2333 | "storagenewsletter.com": 1, 2334 | "guishan.org": 1, 2335 | "christusrex.org": 1, 2336 | "syncback.com": 1, 2337 | "tweetboard.com": 1, 2338 | "powerpointninja.com": 1, 2339 | "orient-doll.com": 1, 2340 | "navicat.com": 1, 2341 | "twittercounter.com": 1, 2342 | "git-scm.com": 1, 2343 | "martau.com": 1, 2344 | "inmediahk.net": 1, 2345 | "aliengu.com": 1, 2346 | "taweet.com": 1, 2347 | "0to255.com": 1, 2348 | "duping.net": 1, 2349 | "tkcs-collins.com": 1, 2350 | "trustedbi.com": 1, 2351 | "redren.com": 1, 2352 | "nighost.org": 1, 2353 | "babynet.com.hk": 1, 2354 | "mmdays.com": 1, 2355 | "appspot.com": 1, 2356 | "dollf.com": 1, 2357 | "hellonewyork.us": 1, 2358 | "1eew.com": 1, 2359 | "taiwannation.com": 1, 2360 | "wezhiyong.org": 1, 2361 | "csuchen.de": 1, 2362 | "wahas.com": 1, 2363 | "lookingglasstheatre.org": 1, 2364 | "furinkan.com": 1, 2365 | "observechina.net": 1, 2366 | "chinachannel.hk": 1, 2367 | "sysresccd.org": 1, 2368 | "meetup.com": 1, 2369 | "renyurenquan.org": 1, 2370 | "chinese-memorial.org": 1, 2371 | "canyu.org": 1, 2372 | "jgoodies.com": 1, 2373 | "china-week.com": 1, 2374 | "pureconcepts.net": 1, 2375 | "sowiki.net": 1, 2376 | "kangye.org": 1, 2377 | "br.st": 1, 2378 | "yfrog.com": 1, 2379 | "msn.com.tw": 1, 2380 | "mingpao.com": 1, 2381 | "crd-net.org": 1, 2382 | "hk": 1, 2383 | "googleapis.com": 1, 2384 | "ydy.com": 1, 2385 | "bipic.net": 1, 2386 | "tibet.com": 1, 2387 | "naitik.net": 1, 2388 | "cuihua.org": 1, 2389 | "gs-discuss.com": 1, 2390 | "diaoyuislands.org": 1, 2391 | "wozy.in": 1, 2392 | "xthost.info": 1, 2393 | "myopenid.com": 1, 2394 | "hkdailynews.com.hk": 1, 2395 | "glennhilton.com": 1, 2396 | "christianstudy.com": 1, 2397 | "freenetproject.org": 1, 2398 | "ebookbrowse.com": 1, 2399 | "gaoming.net": 1, 2400 | "madmenunbuttoned.com": 1, 2401 | "laptoplockdown.com": 1, 2402 | "freakshare.com": 1, 2403 | "e-traderland.net": 1, 2404 | "twtrland.com": 1, 2405 | "huhaitai.com": 1, 2406 | "askstudent.com": 1, 2407 | "yipub.com": 1, 2408 | "truveo.com": 1, 2409 | "tabtter.jp": 1, 2410 | "franklc.com": 1, 2411 | "weigegebyc.dreamhosters.com": 1, 2412 | "iblogserv-f.net": 1, 2413 | "kanzhongguo.eu": 1, 2414 | "freewebs.com": 1, 2415 | "ig.com.br": 1, 2416 | "dwheeler.com": 1, 2417 | "famunion.com": 1, 2418 | "173ng.com": 1, 2419 | "minghui.org": 1, 2420 | "isaacmao.com": 1, 2421 | "perfectvpn.net": 1, 2422 | "freeman2.com": 1, 2423 | "sinonet.ca": 1, 2424 | "jpopforum.net": 1, 2425 | "sobees.com": 1, 2426 | "epochtimestr.com": 1, 2427 | "oyax.com": 1, 2428 | "littlebigdetails.com": 1, 2429 | "mingjingnews.com": 1, 2430 | "sharkdolphin.com": 1, 2431 | "limiao.net": 1, 2432 | "jimoparty.com": 1, 2433 | "assembla.com": 1, 2434 | "dribbble.com": 1, 2435 | "njactb.org": 1, 2436 | "twiggit.org": 1, 2437 | "lookatgame.com": 1, 2438 | "darpa.mil": 1, 2439 | "wtfpeople.com": 1, 2440 | "1-apple.com.tw": 1 2441 | }; 2442 | 2443 | var proxy = "SOCKS5 127.0.0.1:1080; SOCKS 127.0.0.1:1080; DIRECT;"; 2444 | 2445 | var direct = 'DIRECT;'; 2446 | 2447 | var hasOwnProperty = Object.hasOwnProperty; 2448 | 2449 | function FindProxyForURL(url, host) { 2450 | var suffix; 2451 | var pos = host.lastIndexOf('.'); 2452 | pos = host.lastIndexOf('.', pos - 1); 2453 | while(1) { 2454 | if (pos == -1) { 2455 | if (hasOwnProperty.call(domains, host)) { 2456 | return proxy; 2457 | } else { 2458 | return direct; 2459 | } 2460 | } 2461 | suffix = host.substring(pos + 1); 2462 | if (hasOwnProperty.call(domains, suffix)) { 2463 | return proxy; 2464 | } 2465 | pos = host.lastIndexOf('.', pos - 1); 2466 | } 2467 | } 2468 | --------------------------------------------------------------------------------