.:. 草榴社區 » 技術討論區 » 解决Github或Github pages 无法访问
--> 本頁主題: 解决Github或Github pages 无法访问 字體大小 寬屏顯示 只看樓主 最新點評 熱門評論 時間順序
这易逝的容颜


級別:騎士 ( 10 )
發帖:1764
威望:48 點
金錢:35853 USD
貢獻:13940 點
註冊:2019-03-11


解决Github或Github pages 无法访问



本方法来源于网络!
作为开发者,经常使用借助GitHub进行开发,但是最近防火墙发力导致本就半死不活的GitHub在河北彻底无法访问github.com站点,所以以下几个办法供参考【ps:不考虑科学上网】

1.修改hosts
打开 http://tool.chinaz.com/dns?type=1&host=www.github.com&ip=
选择一个TTL最小的ip,比如我这里是新加坡的ip
之后打开这个路径C:WindowsSystem32driversetc找到hosts,将它复制一份到桌面

通过你的文本编辑器打开这个文件,并输入一行记录13.229.188.59 github.com,同理,如果需要 assets-cdn.github.com[CSS,JS加载慢,添加这个],avatars0.githubusercontent.com[用户头像不能访问,或者访问慢],avatars1.githubusercontent.com[用户头像不能访问,或者访问慢],使用上面的方法找到dns域名,填入即可。
这种方法并不是一劳永逸的,因为nds时刻在变,所以一旦不能访问,还是先找可访问的dns域名吧。

2.Cloudflare Workers 反代
利用Cloudflare Workers搭建一个GitHub镜像供自己使用
在 cloudflare 上创建一个 worker
将下面所有内容拷贝,覆盖粘贴到 worker 里面,保存
複製代碼
const config = {
  basic: {
    upstream: 'https://github.com/',
    mobileRedirect: 'https://github.com/',
  },
  firewall: {
    blockedRegion: ['KP', 'SY', 'PK', 'CU'],
    blockedIPAddress: [],
    scrapeShield: true,
  },
  routes: {
    TW: 'https://github.com/',
  },
  optimization: {
    cacheEverything: false,
    cacheTtl: 5,
    mirage: true,
    polish: 'off',
    minify: {
      javascript: true,
      css: true,
      html: true,
    },
  },
};
async function isMobile(userAgent) {
  const agents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod'];
  return agents.any((agent) => userAgent.indexOf(agent) > 0);
}
async function fetchAndApply(request) {
  const region = request.headers.get('cf-ipcountry') || '';
  const ipAddress = request.headers.get('cf-connecting-ip') || '';
  const userAgent = request.headers.get('user-agent') || '';
  if (region !== '' && config.firewall.blockedRegion.includes(region.toUpperCase())) {
    return new Response(
      'Access denied: booster.js is not available in your region.',
      {
        status: 403,
      },
    );
  } if (ipAddress !== '' && config.firewall.blockedIPAddress.includes(ipAddress)) {
    return new Response(
      'Access denied: Your IP address is blocked by booster.js.',
      {
        status: 403,
      },
    );
  }
  const requestURL = new URL(request.url);
  let upstreamURL = null;
  if (userAgent && isMobile(userAgent) === true) {
    upstreamURL = new URL(config.basic.mobileRedirect);
  } else if (region && region.toUpperCase() in config.routes) {
    upstreamURL = new URL(config.routes[region.toUpperCase()]);
  } else {
    upstreamURL = new URL(config.basic.upstream);
  }
  requestURL.protocol = upstreamURL.protocol;
  requestURL.host = upstreamURL.host;
  requestURL.pathname = upstreamURL.pathname + requestURL.pathname;
  let newRequest;
  if (request.method === 'GET' || request.method === 'HEAD') {
    newRequest = new Request(requestURL, {
      cf: {
        cacheEverything: config.optimization.cacheEverything,
        cacheTtl: config.optimization.cacheTtl,
        mirage: config.optimization.mirage,
        polish: config.optimization.polish,
        minify: config.optimization.minify,
        scrapeShield: config.firewall.scrapeShield,
      },
      method: request.method,
      headers: request.headers,
    });
  } else {
    const requestBody = await request.text();
    newRequest = new Request(requestURL, {
      cf: {
        cacheEverything: config.optimization.cacheEverything,
        cacheTtl: config.optimization.cacheTtl,
        mirage: config.optimization.mirage,
        polish: config.optimization.polish,
        minify: config.optimization.minify,
        scrapeShield: config.firewall.scrapeShield,
      },
      method: request.method,
      headers: request.headers,
      body: requestBody,
    });
  }
  const fetchedResponse = await fetch(newRequest);
  const modifiedResponseHeaders = new Headers(fetchedResponse.headers);
  if (modifiedResponseHeaders.has('x-pjax-url')) {
    const pjaxURL = new URL(modifiedResponseHeaders.get('x-pjax-url'));
    pjaxURL.protocol = requestURL.protocol;
    pjaxURL.host = requestURL.host;
    pjaxURL.pathname = pjaxURL.path.replace(requestURL.pathname, '/');
    modifiedResponseHeaders.set(
      'x-pjax-url',
      pjaxURL.href,
    );
  }
  return new Response(
    fetchedResponse.body,
    {
      headers: modifiedResponseHeaders,
      status: fetchedResponse.status,
      statusText: fetchedResponse.statusText,
    },
  );
}
// eslint-disable-next-line no-restricted-globals
addEventListener('fetch', (event) => {
  event.respondWith(fetchAndApply(event.request));
});


之后通过worker 的子域名来访问GitHub
但是这种方法我是不大推荐的,因为这样不可以登录,也就是说不可以下载,如果想要下载则需要再新建一个worker然后输入以下代码
複製代碼
addEventListener('fetch', event => {
    event.respondWith(handleRequest(event.request).catch((err) => { return new Response(err.message) }))
})
const html = `
  <html><head><h1 style=\"font-size:32px;font-family:verdana;color:red;\">Github直链加速下载每日10w次调用 </h1></head><body>
    <input type=\"url\" placeholder=\"url\" id=\"url\" style=\"border: 6px solid powderblue;color: blue; width: 60%; display: block;\">
  <input
  type=\"submit\" id=\"submit\" value=\"submit\"
  style=\"width: 30%; text-align: center;font-size: 18px;border: 1px solid powderblue;\"/>
  <div id=\"res\"></div>
  <a id=\"a\" href=\"\"\"></a>
  <p>
<br>
<br>
<br>
怎么自己搭建这个界面?
<br>
https://scaleya.com/publication/github-download-faster-with-cloudflare-worker/
</p>
  <script>
  document.getElementById('submit').onclick=function(){
      let url  = document.getElementById('url').value;
      console.log('url: '+url);
      let a = document.getElementById('a');
      let div = document.getElementById('res');
      if(!url || !url.startsWith('http')){
          div.textContent=\"链接不合法: \"+url;
          a.style=\"display:none\";
      }else{
          div.textContent=\"\";
          let res = (new URL(window.location.href)).origin+'?url='+encodeURIComponent(url);
          a.textContent=res;
          a.href=res;
          a.style=\"\";
      }
  }
  </script>
  </body></html>`;
/**
* Respond to the request
* @param {Request} request
*/
async function handleRequest(request) {
    if (request.method === 'OPTIONS' && request.headers.has('access-control-request-headers')) {
        return new Response(null, {
            status: 204,
            headers: new Headers({
                'access-control-allow-origin': '*',
                'access-control-allow-methods': 'GET,POST,PUT,PATCH,TRACE,DELETE,HEAD,OPTIONS',
                'access-control-allow-headers': '*',
                'access-control-max-age': '1728000'
            }),
        })
    }
    let req_url = new URL(request.url);
    if (req_url.pathname.startsWith('/ajax/')) {//ajax
        let url = req_url.pathname.slice(6).replace(/^(https?):/+/, '$1://');
        if (!url) return new Response(\"Only For Ajax\");
        let res = await fetch(url, { method: request.method, headers: request.headers, body: request.body });
        let h = new Headers(res.headers);
        h.set('access-control-allow-origin', '*');
        h.set('access-control-expose-headers', '*');
        return new Response(res.body, { status: res.status, headers: h });
    } else if (req_url.pathname === '/') {//download
        let url = req_url.searchParams.get('url');
        if (!url) return new Response(html, { status: 200, headers: { 'Content-Type': 'text/html; charset=utf-8' } });
        let res;
        if (request.headers.get('Range')) {
            res = await fetch(url, { headers: { 'Range': request.headers.get('Range') } });
        } else {
            res = await fetch(url);
        }
        let h = new Headers(res.headers);
        h.set('set-cookie', '');
        h.set('access-control-allow-origin', '*');
        h.set('access-control-expose-headers', '*');
        return new Response(res.body, {
            status: res.status,
            headers: h,
        })
    } else {
        return new Response(\"400 --\", { status: 400, headers: { 'Content-Type': 'text/html; charset=utf-8' } });
    }
}



赞(7)
TOP Posted:2022-02-08 21:16 樓主 引用 | 發表評論
乱七嚟留种


級別:新手上路 ( 8 )
發帖:607
威望:61 點
金錢:750 USD
貢獻:0 點
註冊:2015-10-08


1024
TOP Posted:2022-02-08 21:17 #1樓 引用 | 點評
椰林小蚂蚁


級別:禁止發言 ( 8 )
發帖:16214
威望:8023 點
金錢:308 USD
貢獻:1640 點
註冊:2020-02-11

给大佬献上膝盖
------------------------
X
TOP Posted:2022-02-08 21:17 #2樓 引用 | 點評
万向伦


級別:俠客 ( 9 )
發帖:1521
威望:153 點
金錢:1629 USD
貢獻:0 點
註冊:2019-01-02

支持技术帖!
TOP Posted:2022-02-08 21:18 #3樓 引用 | 點評
混江龙


級別:俠客 ( 9 )
發帖:323
威望:280 點
金錢:5658 USD
貢獻:0 點
註冊:2022-01-26

看看学习下
TOP Posted:2022-02-08 21:19 #4樓 引用 | 點評
爲伊人憔悴


級別:精靈王 ( 12 )
發帖:4576
威望:458 點
金錢:127 USD
貢獻:60000 點
註冊:2021-09-16

谢谢分享
TOP Posted:2022-02-08 21:24 #5樓 引用 | 點評
鼓掌要大声


級別:聖騎士 ( 11 )
發帖:9095
威望:277 點
金錢:48077 USD
貢獻:0 點
註冊:2020-09-15

大神收下我的膝盖
TOP Posted:2022-02-08 21:28 #6樓 引用 | 點評
簡体男人


級別:聖騎士 ( 11 )
發帖:3487
威望:619 點
金錢:417372 USD
貢獻:0 點
註冊:2021-09-19

妥妥的技术教程
------------------------
J
TOP Posted:2022-02-08 21:29 #7樓 引用 | 點評
东海小神龙


級別:新手上路 ( 8 )
發帖:391
威望:40 點
金錢:391 USD
貢獻:0 點
註冊:2021-11-29

感谢分享
TOP Posted:2022-02-08 21:31 #8樓 引用 | 點評
夜游宫


級別:光明使者 ( 14 )
發帖:65467
威望:47174 點
金錢:1218 USD
貢獻:21 點
註冊:2020-02-08
認證: 博彩區特使
2021-07-09

支持技术分享
TOP Posted:2022-02-08 21:32 #9樓 引用 | 點評
漂泊四方


級別:騎士 ( 10 )
發帖:4753
威望:386 點
金錢:146 USD
貢獻:0 點
註冊:2020-07-24

感谢分享
TOP Posted:2022-02-08 23:30 #10樓 引用 | 點評
拾谎


級別:俠客 ( 9 )
發帖:1202
威望:121 點
金錢:1206 USD
貢獻:0 點
註冊:2019-07-16


谢谢分享
TOP Posted:2022-02-08 23:34 #11樓 引用 | 點評
zhao502


級別:聖騎士 ( 11 )
發帖:4434
威望:333 點
金錢:224043463 USD
貢獻:33333 點
註冊:2010-03-14

感谢分享
TOP Posted:2022-02-08 23:47 #12樓 引用 | 點評
继续喝豆浆


級別:騎士 ( 10 )
發帖:6132
威望:551 點
金錢:94 USD
貢獻:1314 點
註冊:2015-08-29

纯技术贴
TOP Posted:2022-02-09 00:05 #13樓 引用 | 點評
huatian1024


級別:精靈王 ( 12 )
發帖:11068
威望:3573 點
金錢:1061 USD
貢獻:100 點
註冊:2020-02-15

技术贴,感谢大佬分享
TOP Posted:2022-02-09 00:07 #14樓 引用 | 點評
xuejiao209


級別:騎士 ( 10 )
發帖:3891
威望:390 點
金錢:1705827 USD
貢獻:0 點
註冊:2017-04-01

感谢分享
TOP Posted:2022-02-09 05:01 #15樓 引用 | 點評
Shiyueruchu


級別:精靈王 ( 12 )
發帖:3180
威望:324 點
金錢:1488 USD
貢獻:65371 點
註冊:2021-06-02

涨知识了
TOP Posted:2022-02-09 05:57 #16樓 引用 | 點評
lovecan


級別:騎士 ( 10 )
發帖:3781
威望:387 點
金錢:5563 USD
貢獻:4 點
註冊:2011-10-03


很有意思
TOP Posted:2022-02-09 06:04 #17樓 引用 | 點評
口臭男孩


級別:騎士 ( 10 )
發帖:4480
威望:449 點
金錢:1523 USD
貢獻:0 點
註冊:2015-07-28

感谢分享
TOP Posted:2022-02-09 06:21 #18樓 引用 | 點評
潇湘夜汐雨


級別:新手上路 ( 8 )
發帖:837
威望:86 點
金錢:208799 USD
貢獻:0 點
註冊:2018-05-25

感谢分享
TOP Posted:2022-02-09 07:00 #19樓 引用 | 點評
拐子


級別:俠客 ( 9 )
發帖:2464
威望:247 點
金錢:5629 USD
貢獻:0 點
註冊:2017-06-04

感谢作者的分享
TOP Posted:2022-02-09 07:04 #20樓 引用 | 點評
耗子爱骑猫


級別:俠客 ( 9 )
發帖:1015
威望:102 點
金錢:1283 USD
貢獻:0 點
註冊:2022-01-31

1024
TOP Posted:2022-02-09 07:12 #21樓 引用 | 點評
andy137025


級別:騎士 ( 10 )
發帖:5539
威望:555 點
金錢:4100411 USD
貢獻:2 點
註冊:2007-01-16

感谢分享
TOP Posted:2022-02-09 07:26 #22樓 引用 | 點評
动画片大魔王


級別:聖騎士 ( 11 )
發帖:3077
威望:430 點
金錢:22183 USD
貢獻:25566 點
註冊:2021-01-25


感谢分享
TOP Posted:2022-02-09 07:34 #23樓 引用 | 點評
陈饭饭


級別:俠客 ( 9 )
發帖:1179
威望:118 點
金錢:1179 USD
貢獻:0 點
註冊:2021-10-24

谢谢我大哥码字
TOP Posted:2022-02-09 08:09 #24樓 引用 | 點評

.:. 草榴社區 -> 技術討論區

快速回帖 頂端
內容
HTML 代碼不可用

使用簽名
Wind Code自動轉換

按 Ctrl+Enter 直接提交