修改本地host文件來加速訪問github.ios
如何獲取在中國的github代理ip地址?
我找到了這個網站: http://ping.chinaz.com/github...git
具體思路就是和上面網站同樣,循環請求接口獲取各地機房的延遲,而後比較出最低延遲的機房,拿到ip, 再去修改本地Host文件, go.github
到這個網站 http://ping.chinaz.com/github... 很快就能找到類似點。得出接口以下:json
get http://ping.chinaz.com/iframe.ashx
其中,最關鍵的是guid, 其他參數照抄便可。axios
關於guid, 右鍵源代碼,發現guid全在id爲speedlist
的元素下。
經過如下代碼獲取全部機房的guid網絡
var a = Array.from($0.children).map(v => v.getAttribute('id')) copy(a)
[ "4daa81e2-f397-4cde-bf74-b2bee84a4ea5", "95b30a9e-f797-46ae-b9ef-268692caddf6", "eeb78862-50d4-4823-94f2-6de143374a27", "403d18aa-9a0f-4d3c-b175-f4a10683deb9", "32574c06-d0fc-4709-8fc9-fce30596efd3", "c665eba1-e4a0-4da3-a438-404768bb5fd6", "b81dffbf-3644-43a3-bf29-099816488ba2", "252167a8-eaeb-491b-a4f3-319d25680f48", "db8eb6ed-734e-4747-a526-d6c8b408acb5", "aaeb0b79-c13c-48b8-abc8-ae8ce1ec7f65", "4a40427f-502e-4a85-8752-980f2d8bbae1", "0003d32b-8585-4480-b0ea-dd0a10768dd2", "0209986e-259b-4817-9d17-2418bb5b0756", "e6a3a9b7-2088-41be-bf1d-6a25276ab1ed", "6a3749de-aa34-4b7f-96c8-f28b9a32238b", "8fbd45ea-7fe2-43f5-84aa-cd3921475732", "efa326df-41dd-4c7f-af5e-bd7572658d82", "1f430ff0-eae9-413a-af2a-1c2a8986cff0", "ca6e017e-17b8-45eb-94b3-a408b8b79f1c", "4d7637d7-4950-4b79-9741-c397789bcf05", "0f885910-80d6-4f77-8f4f-3d90d8779d17", "fcb3c928-222c-45dc-b2cd-85508e385b65", "74cb6a5c-b044-49d0-abee-bf42beb6ae05", "604e79e8-f0ad-40a3-ad30-fc2c55b78943", "5802da93-4e05-4932-9bc6-20d5d75b7af5", "61ceba20-2cb1-4482-9e48-acbe876bd3ba", "7f46f5c9-d719-4886-b3c0-6b6427908791", "415ce02c-b3e9-4cad-adbd-baab32d63edc", "0e519c9d-dab8-480c-a372-c72480dd133a", "df8bdd7a-b928-41f8-959f-d0d56fadea64", "17d812b5-ced1-4717-8669-51ce10615682", "5d20130d-75e0-481e-a651-c3da8656a3b3", "766a3283-4add-438d-a5bb-e8b6cef139c3", "2140cc66-e5ea-4f56-981a-8f044a98c92a", "8d8e4cbb-10de-4573-bb56-1dd7e36feaf3", "36317cda-2716-49e0-9cd0-4baaa0cacaf3", "56d53df5-2784-4b70-b268-6594a216109b", "14ef4fcf-3712-4971-9c24-0d1657751022", "ec83c2ca-95ec-40ba-aabe-a9b6f3da8fff", "24ad8183-b682-4c00-8d58-b73b47d558ca", "0d3fd0b2-1255-4e5d-b94e-717569d2e8bd", "96bcf0f8-dccc-4a66-9ce1-a5107b8779a8", "74c25181-4087-459a-8035-67278afaa2f1", "df61b0a8-f88e-4959-9e4e-c33101f4de2e", "b615642c-ac86-4322-9fbe-4bd79e175a99", "9cd12aba-b71d-4cfd-92a4-4447745ee9e1", "f3edbd07-fc92-4333-8626-4f6f4ce49b0b", "0fb19ea5-4a8e-49ec-b248-59dabf586245", "9bc90d67-d208-434d-b680-294ae4288571", "0caa7b64-4a66-4de2-b4d9-0f7d537cd8ae", "942de632-7962-41e5-961b-c7ad98b31c5a", "fb715e9d-f578-41bd-b95f-75cc3fe69cf2", "5713f157-3378-495a-9c55-7172187e9f36", "316c5129-231d-4494-a81f-e49d14de9a81", "3a8de27a-c93e-4f97-9b67-f2b5b2028eb8", "3bafbbb2-dc57-4de7-8ef6-20402b881dbe", "5074fb13-4ab9-4f0a-87d9-f8ae51cb81c5", "47b7ab69-0008-4dae-8d99-54f7038f1510", "9280a6f4-f3c6-4173-a77d-c2bdaac3e709", "07f2f1cc-8414-4557-a8c1-27750a732f16", "012834d4-5a15-4a90-9520-8515e558873f", "6c84b028-554b-49f4-87bd-4f15f3eed735", "eb7215a6-7f0e-4bf7-89fe-ec0e7ee9f32c", "19ef9d71-e0cb-4b79-a416-8fd670f6e7ca", "945fcfae-276a-4e42-9133-4d47d2999b08", "ea551b59-2609-4ab4-89bc-14b2080f501a", "a936bb02-6b19-4da5-9c82-e8bb68fcfbea", "703e401a-1e50-4bda-9c82-b1ca883e3bbf", "2805fa9f-05ea-46bc-8ac0-1769b782bf52", "b698f5c4-0c88-4ae4-b123-ef57293ce442", "9c137190-5a57-4ef5-be4b-b9add998ad52", "0bf6e659-226e-40b1-b605-962929e9fba8", "4d462057-4581-4ae1-974d-ca7ca019e700", "e91e73db-703d-464d-a82a-1e8286a19cb1", "a1fa84e1-aeb5-4909-aac8-d6f0d7e45456", "f8205979-1951-4f20-a66e-2f2ca97cf75b", "11bd620a-7456-4835-9129-038eaa9fa8b9", "dc440a55-1148-480f-90a7-9d1e0269b682", "3ce7a84d-191b-49a2-81a6-e32bbe2c06a0", "8c0b720b-e1a1-4422-a948-e8d7ec7e4906", "9365c01e-163f-4f07-b569-a9302b685c30", "8ebdf782-2203-4bc2-9774-68fe0d3691c8", "5bea1430-f7c2-4146-88f4-17a7dc73a953", "6e5e03b3-d8d6-48bc-a87a-033f7c877b33", "12b16bb6-d42d-4296-a394-b96b22bca9c3", "6305bac1-7adb-48cf-aff2-d3ac2dd65dde", "8fef9cd0-af0b-4beb-b0b0-37388c74a2ae", "d434f9dd-c862-47e0-89cf-3633aa061509", "38ecaef6-76e4-4030-bd7f-af9e6240f4b6", "483bad95-d9a8-4026-87f4-7a56501bf5fd", "87c200e0-0059-479f-8103-e9e504f735d0", "bd3b89bd-aeec-4079-8c08-a86770abb830", "cb22befe-58f9-45f6-a246-4ad66bcfa448", "08117724-8437-4ebb-88ae-93e50f660867", "cb9069aa-c897-4f27-bc36-988da8f4cb03", "9d5f55d6-ad1a-4efb-b368-c7de4b7005c5", "6c5f2077-b898-4918-86b0-9ab82273eea6", "040d7a4f-3c04-462f-9e96-2bf629af4a08", "cdcf3a45-8366-4ab4-ae80-75eb6c1c9fca", "91937e5b-1db0-47b5-b114-c9294694f377", "c1b98ee7-8584-4e98-8e6d-049a633b6bdf", "eac78784-07a1-4869-be7c-3870a8dcebfc", "7b578630-b705-42dc-936f-8d4703b955ac", "e33f289c-f401-449b-a135-e654e597b150", "737831b4-95e1-445f-a981-c1333faf88bd", "39bed414-9402-4266-aa9a-8252e958558f", "54a02700-5812-4ec8-8d24-c4276c7eb080", "5c02bccc-ae5c-45ef-9204-b3055f985e20", "95d0626d-dc85-48c0-b3a9-e656811d3028", "2b0dc147-1f6c-405c-b91f-faff417cf1da", "b2bbe313-d66d-47a3-ace2-d1229da5c28c", "774af056-e15d-4689-83f7-e5067a0c5512", "80a828bd-19ed-48c3-a035-e69f6468da03", "5fb9012d-b47c-4087-84a2-0b0dfa8c94ab", "e11f1b36-2995-413c-90bb-9f3afff8caed", "38806ef7-4638-4808-96e4-85047dfa5853", "53e79941-312c-4343-8739-6be3cd105805", "02a01d5d-5111-481f-aade-e999a584d8a4", "352ba952-a177-4a65-b35c-184f080181cf", "29d2a14f-accc-43b8-9444-fd6b9e7902bc", "e7ddd974-711f-4fea-90cd-3a89600a72b8", "458d74e3-6349-4d58-918b-3d8b4bdf7a6c", "e4f8c1ef-2160-47f7-850f-6446ca0680b4", "c7d37949-9b15-48a7-a9f3-19f04fe20752", "5cddb7c6-3a78-4ae8-9472-28d31c61b803", "d8d0e98b-e201-4cd4-a392-48a3142e4bfc", "a0be885d-24ad-487d-bbb0-c94cd02a137d", "04cd8a98-2f21-4fe2-805f-bd663ca2cc5e", "dc440a55-1148-480f-90a7-9d1e0269b682", "1f4c5976-8cf3-47e7-be10-aa9270461477", "d9041619-7d90-42ea-9811-2b2fe11cb2b0", "6323e95e-408a-4598-b6d2-cc44aa64c6f0", "1e375923-e5ee-491e-ba21-621a95ef9de9", "54f7f313-1a14-4075-b52a-8513811541a6" ]
const axios = require('axios'); const QueryString = require('qs'); const server = require('./server'); const hosts = require('hosts-group'); const dns = require('dns') console.log('正在查詢機房信息...') Promise.all(server.map(s => { return axios({ url: 'http://ping.chinaz.com/iframe.ashx', params: { t: 'ping' }, headers: { 'content-type': 'application/x-www-form-urlencoded' }, data: QueryString.stringify({ guid: s, host: 'github.com', ishost: '0', isipv6: '0', encode: 'vLtCvLxV07f5qlRYHoLFBPaKNX8OZFnP', checktype: '0' }) }) })).then(res => { const finalTime = res.map(v => v.data).reduce((acc, val) => { const data = eval(val) if (!data.state) return acc const time = data.result.responsetime const stime = Number(time.substring(0, time.length - 2)) if (isNaN(stime)) return acc if (acc && acc.result && acc.result.responsetime) { const accdata = eval(acc) const acctime = accdata.result.responsetime const accstime = Number(acctime.substring(0, acctime.length - 2)) if (stime >= accstime) { return accdata } } else { return data } }) if (finalTime) { console.log('查詢機房成功, 延遲最低的機房爲: ', finalTime); } else { console.error('查詢機房信息失敗,多是網絡波動引發的,建議重試...') process.stdout.write("任意字符結束進程") process.stdin.on('data', () => { process.exit(0); }) return } console.log('正在設置DNS...') dns.lookup('github.com', (err, result) => { hosts.remove('github.com', result) hosts.set('github.com', finalTime.result.ip) console.log('成功! 打開github.com進行檢驗') process.stdout.write("任意字符結束進程") process.stdin.on('data', () => { process.exit(0); }) }) }).catch(e => { console.error('查詢失敗, 信息爲: ', e) })
用到了如下庫:app
在管理員的命令行中,運行此js文件網站