V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ciki
V2EX  ›  程序员

请问有没有办法让 Linux 访问到 github 的时候自动添加加速域名?

  •  
  •   ciki · 2022-02-27 11:00:35 +08:00 · 3943 次点击
    这是一个创建于 868 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如只要检测到访问 github 地址就自动在 url 前面加上 https://mirror.ghproxy.com/

    第 1 条附言  ·  2022-02-27 23:36:57 +08:00
    别说什么梯子了,你会在服务器上搭建梯子吗
    第 2 条附言  ·  2022-02-28 09:50:03 +08:00
    因为是一台阿里云服务器,并不想在服务器里面挂梯子,访问 github 的需求是有一些定时运行的脚本,会访问到 github ,对其他的没有需求
    22 条回复    2022-02-28 22:13:03 +08:00
    villivateur
        1
    villivateur  
       2022-02-27 11:16:56 +08:00 via Android   ❤️ 1
    在路由器上做个劫持吧,其他没啥好的方案
    learningman
        2
    learningman  
       2022-02-27 11:25:44 +08:00
    考虑到 https ,劫持都不好做,还是弄个梯子吧
    teekgeek
        3
    teekgeek  
       2022-02-27 11:33:33 +08:00
    Sainnhepark
        4
    Sainnhepark  
       2022-02-27 11:38:42 +08:00 via Android   ❤️ 2
    mingl0280
        5
    mingl0280  
       2022-02-27 12:02:04 +08:00 via Android
    装个 Windows 用 proxifier
    sujin190
        6
    sujin190  
       2022-02-27 12:05:01 +08:00
    一种可行的方案就是自己弄个根证书签个私有的 github 证书,然后设置 github.com 解析都 127.0.0.1 ,然后在本机配置 nginx 转发到 https://mirror.ghproxy.com/估计行

    不过似乎太麻烦了吧,简单一点为 github.com 在 hosts 中设置一个固定地址,然后配置 iptables 配置地址端口重写把该地址的流量转到你的加速代理就好了吧,为了把普通流量解析成代理协议,之前写过一个脚本
    python3 -m sevent.helpers.arproxy -h
    先 pip install sevent 包,这个脚本会解析 http 和 tls 头提取访问域名,然后使用你指定的代理协议转发到你配置的代理服务器来代理访问,你可以试试看能不能满足你的需求
    yin1999
        7
    yin1999  
       2022-02-27 12:14:09 +08:00 via Android   ❤️ 1
    用浏览器插件最方便,你可以看看这个插件行不行 https://chrome.google.com/webstore/detail/requestly-modify-headers/mdnleldcmiljblolnjhpnblkcekpdkpa

    不行就按 google 跳转到 cn 站点的插件改写一下 https://github.com/chenzhuo914/google-cn-devsites-extension
    yin1999
        8
    yin1999  
       2022-02-27 12:35:19 +08:00 via Android
    @yin1999 不好意思,好像没考虑到命令行
    wangyu17455
        9
    wangyu17455  
       2022-02-27 12:40:50 +08:00 via Android
    fake-ip ,劫持本机 dns 然后把 github 解析到 198 之类的非公网地址上,然后在本机注册一个 tun 设备处理这些流量给它加代理(没错我说的就是 clash 的 tun 模式)
    stille
        10
    stille  
       2022-02-27 14:28:24 +08:00
    如果是脚本里,可以来个判断.

    ```
    PROXY_URL="https://ghproxy.com"
    GOOGLE_HTTP_CODE=$(curl -o /dev/null --connect-timeout 5 --max-time 8 -s --head -w "%{http_code}" "https://www.google.com")
    PROXY_HTTP_CODE=$(curl -o /dev/null --connect-timeout 5 --max-time 8 -s --head -w "%{http_code}" "${PROXY_URL}")

    if [ $GOOGLE_HTTP_CODE == "200" ]; then
    curl -L -O https://raw.githubusercontent.com/.../.../...
    else
    if [ $PROXY_HTTP_CODE == "200" ]; then
    curl -L -O ${PROXY_URL}https://raw.githubusercontent.com/.../.../...
    else
    curl -L -O https://raw.githubusercontent.com/.../.../...
    fi
    fi
    ```
    stille
        11
    stille  
       2022-02-27 14:29:15 +08:00
    接上文,变量少个 /

    PROXY_URL="https://ghproxy.com/"
    mingl0280
        12
    mingl0280  
       2022-02-27 15:12:10 +08:00 via Android
    我刚刚闲得蛋疼想了下还有另外一个办法,稍微有点复杂,需要几个服务:
    1.dns 服务器,或者 hosts……不管哪种,把 URL 解析到要么本机或者专门的内网虚拟机。建议后者,前者容易抽风。
    2.apache 或者 nginx (反正某种 web 服务器)开启 URL Rewrite 模块,配置重写 URL 规则( rewrite 到你要的域名)。http 和 https 都要配置。注意:这台机器的 DNS 不可访问或请求上面 1 的 DNS 。
    3.用于给 2 的服务使用的、自己添加信任的 SSL 证书,用于支持 2 的 https 访问。
    这样搞一下应该可以实现无痕转发(就是你访问 github.com 实际上被 dns 先劫持到本地的服务器,然后本地的服务器反代到加速网址)。我以前用 Windows server 搞过内网部分劫持 ubuntu 源加速就用的这个类似的手法,只是我的 HTTP 服务器就在本地,所以没有做反向代理。
    freeskysssss
        13
    freeskysssss  
       2022-02-27 16:34:37 +08:00
    直接用 clash 翻墙不就行了吗?
    janus77
        14
    janus77  
       2022-02-27 17:04:47 +08:00   ❤️ 1
    没必要 全程梯子就行了
    kingcanfish
        15
    kingcanfish  
       2022-02-27 20:17:02 +08:00
    都上 V2EX 了 还用教怎么魔法上 github 吗?
    GoodRui
        16
    GoodRui  
       2022-02-27 21:47:29 +08:00
    initd
        17
    initd  
       2022-02-27 23:52:08 +08:00
    git 源
    GIT_SSL_NO_VERIFY=1 git clone https://gh-cf.mirr.one/bot-h/kodbox.git
    GIT_SSL_NO_VERIFY=1 git clone https://gh.gcdn.mirr.one/bot-h/kodbox.git

    githubusercontent 全域
    `.githubusercontent.com` -> `-gh.mirr.one`

    https://raw-gh.mirr.one/initdc/vvtt/master/gen.sh

    github 到 ghuser 自动跳转
    https://gh-rep.mirr.one/initdc/vvtt/raw/master/gen.sh
    initd
        18
    initd  
       2022-02-27 23:54:18 +08:00
    githubusercontent 全域
    .githubusercontent.com -> -ghuser.mirr.one

    https://raw-ghuser.mirr.one/initdc/vvtt/master/gen.sh
    irainsoft
        19
    irainsoft  
       2022-02-28 08:55:59 +08:00
    这种另类需求只有挂代理最简单,做劫持只会更麻烦。命令行下装个图形界面,再上个代理程序其实很快就能解决问题
    scukmh
        20
    scukmh  
       2022-02-28 10:57:56 +08:00
    为啥不能挂代理呢?根本不需要装图形界面,直接一个 clash-core 就能解决问题,而且也不用服务器全局走代理工作,你只需要在下载脚本之前,export 环境变量就行了。
    wangtian2020
        21
    wangtian2020  
       2022-02-28 14:08:01 +08:00
    直接油猴脚本判断跳转不就完事了
    yaott2020
        22
    yaott2020  
       2022-02-28 22:13:03 +08:00 via Android
    http 代理挺好的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   935 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:32 · PVG 03:32 · LAX 12:32 · JFK 15:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.