Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【镜像站点搜集】 #116

Open
hunshcn opened this issue Jan 10, 2024 · 27 comments
Open

【镜像站点搜集】 #116

hunshcn opened this issue Jan 10, 2024 · 27 comments

Comments

@hunshcn
Copy link
Owner

hunshcn commented Jan 10, 2024

因为演示站确实无法保证可用性,24小时的额度基本16小时就会用完,但是需求也确实有。

可以在本帖附上愿意被索引的镜像站点。

先贴俩比较大的

也感谢镜像站的维护者们,非 worker 版本成本还是不低的。

镜像站可能会由于各种原因禁止部分地址访问,这很合理也很正常。所以,一希望开发者合理配置访问频次,尤其是一些分发量大的项目,二请不要由于访问原因开 issue 了。

@hunshcn hunshcn pinned this issue Jan 10, 2024
@floydmd2x
Copy link

https://gh-proxy.llyke.com

@kubernetes-dev
Copy link

感谢作者的贡献
https://free.cn.eu.org

@libsgh
Copy link
Contributor

libsgh commented Feb 3, 2024

https://gh.noki.icu/ OR
https://gh.noki.eu.org/

@XxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX0

https://gh-proxy.com/

@0xRK3399
Copy link

0xRK3399 commented Feb 6, 2024

感谢作者的贡献,分流:
https://gh.cache.cloudns.org/

@iuu6
Copy link

iuu6 commented Feb 10, 2024

https://www.ten-year.link/
不保证稳定
基于Golang的版本
https://github.com/iuu6/gh-proxy
欢迎使用和反馈错误

@kiko923
Copy link

kiko923 commented Feb 10, 2024

我的https://ghproxy.cc/ 美国G口机器
感谢开源

@mrdong916
Copy link

mrdong916 commented Mar 7, 2024

感谢作者的贡献
https://gh.sixyin.com
https://gh.6yit.com
英国VPS 第二个带宽比较小 不保证稳定性

@shaonianche
Copy link

https://ghproxy.friendsa.onflashdrive.app/

@pansong291
Copy link

pansong291 commented Apr 11, 2024

@Sourire233
Copy link

https://gh.bink.cc/

@yxing-xyz
Copy link

我的ghproxy.cc 美国G口机器 感谢开源

原来是你啊,我在google搜到了一直用的你的

@yxing-xyz
Copy link

gh-proxy.com

好像现在有点问题了,访问不了

@kiko923
Copy link

kiko923 commented May 21, 2024

google还能搜到我的嘛 我之前自己都搜不到 你咋搜的哈哈哈哈 感谢支持

我的ghproxy.cc 美国G口机器 感谢开源

原来是你啊,我在google搜到了一直用的你的

@xvzhenduo
Copy link

https://dev.xvzhenduo.top/gh-proxy/

@kiko923
Copy link

kiko923 commented May 25, 2024

再次总结一下我的 昨天已订阅Cloudflare付费计划 一个月有1000万调用次数 昨天新注册了域名ghproxy.cn

列表:
https://ghproxy.cc
https://ghproxy.cn

感谢开源
image
image
image

@blackvon-sudo
Copy link

https://gh.ezctrl.cn/

@743859910
Copy link

再次总结一下我的 昨天已订阅Cloudflare付费计划 一个月有1000万调用次数 昨天新注册了域名ghproxy.cn

列表: https://ghproxy.cc https://ghproxy.cn

感谢开源 image image image

老哥 你这种UI的是怎么实现的了?

@743859910
Copy link

这里贴三个我搭的
https://github.iaor.asia/
https://githubproxy.iaor.asia/
https://githubmirrors.iaor.asia/

@kiko923
Copy link

kiko923 commented Jun 17, 2024

再次总结一下我的 昨天已订阅Cloudflare付费计划 一个月有1000万调用次数 昨天新注册了域名ghproxy.cn

列表: https://ghproxy.cc https://ghproxy.cn

感谢开源 image image image

老哥 你这种UI的是怎么实现的了?

我自己写的前端页面 托管在静态站

@0-RTT
Copy link

0-RTT commented Aug 18, 2024

地址:https://gh.jiasu.in/
基于Go语言开发:https://github.com/0-RTT/ghproxy-go

@xuchaoxin1375
Copy link

xuchaoxin1375 commented Sep 3, 2024

[toc]

abstract

  • 在国内,为了提高访问github的成功率,以及下载相关资源的成功率或速度,可以考虑使用代理镜像

  • 本文提供了一个可以批量检测许多开发者分享的加速站点是否能够响应请求(不保证百分百可靠),或者站点的响应是否达到预期

  • 这些加速镜像的实现大多来自于开源项目:hunshcn/gh-proxy: github release、archive以及项目文件的加速项目,而具体的加速站点由更多人贡献

  • 感谢这些为爱发电的贡献者,注意合理使用相关资源

powershell 脚本内容

  • 推荐使用powershell 7来运行,windows powershell 5无法兼容并行特性,并且对于代码排版的兼容性也不好
[CmdletBinding()]
param(
    $Mirrors = $GithubMirrors,
    $ThrottleLimits = 16,
    $TimeOutSec = 3,
    [switch]$ListView,
    [switch]$PassThru,
    [switch]$SkipCheckAvailability,
    # 是否启用线性试探镜像可访问性(默认是并行试探)
    [switch]$Linearly,
    # First是为串行测试准备的,对于并行测试,是多余的参数
    [parameter(ParameterSetName = 'First')]
    $First = 5,
    [parameter(ParameterSetName = 'All')]
    [Alias('Full')]
    [switch]
    $All
)

$GithubMirrors = @(
    # 注意,如果你的浏览器使用了代理,那么部分镜像站会和代理冲突,所以可能命令行中测试可以访问的链接在浏览器中确打不开镜像站,可以关闭代理或换个浏览器后重新验证该镜像站的可用性
    #搜集到的链接可以用gpt进行修改,将链接包裹引号(指令:为这些链接分别添加引号);或者自己粘贴到文件文件中然后编写脚本转换为数组格式
    'https://github.moeyy.xyz', # Moeyy - 提供 GitHub 文件的加速下载功能
    'https://ghproxy.cc',
    'https://ghproxy.net', # GitHub Proxy by GitHub99 - 提供 GitHub 文件的加速下载和克隆服务 #和用户自己的代理可能发生冲突
    'https://mirror.ghproxy.com',
    
    # 'https://ghproxy.com/bad/demo', #虚假镜像,用来测试代码是否能够正确处理不可用的镜像链接
    'https://ghproxy.homeboyc.cn/',
    'https://gh-proxy.com/',
    
    'https://gh.ddlc.top',
    'https://github.ur1.fun/',

    '' #空字符串收尾
)
$GithubMirrorsTest = @(
    'https://gh-proxy.com/',
    'https://ghps.cc/',
    'https://ghproxy.net/',
    'https://github.moeyy.xyz/',
    'https://gh.ddlc.top/',
    'https://slink.ltd/',
    'https://gh.con.sh/',
    'https://hub.gitmirror.com/',
    'https://sciproxy.com/',
    'https://cf.ghproxy.cc/',
    'https://gh.noki.icu/',

    ''#收尾
)
$GithubMirrors = $GithubMirrors + $GithubMirrorsTest
$GithubMirrors = $GithubMirrors | Where-Object { $_ }#移除空串
$GithubMirrors = $GithubMirrors | ForEach-Object { $_.trim('/') } | Sort-Object #统一链接风格(去除末尾的`/`如果有的话)
$GithubMirrors = $GithubMirrors | Get-Unique #移除重复条目

function Test-LinksLinearly
{
    <# 
    .SYNOPSIS
    线性地(串行地)测试链接是否能够在指定时间内响应,为powershell5 设计
    .NOTES
    链接数量多的话会造成测试时间很长,尽量使用并行方案(pwsh7),或者考虑设置小的$timeoutSec=1
    #>
    [cmdletbinding(DefaultParameterSetName = 'First')]
    param (
        $Mirrors = $GithubMirrors,
        $TimeOutSec = 4,
        [parameter(ParameterSetName = 'First')]
        $First = 5,
        [parameter(ParameterSetName = 'All')]
        [Alias('Full')]
        [switch]
        $All
    )
    $availableMirrors = @()
    
    foreach ($mirror in $Mirrors)
    {
        # $Mirrors | ForEach-Object {
        # $mirror = $_

        # Write-Verbose "Testing $mirror..."
        if (Test-MirrorAvailability -Url $mirror -TimeoutSec $TimeOutSec)
        {
            Write-Verbose "$mirror is available "
            Write-Host "`t $mirror" -ForegroundColor Green
            # 插入到数组中(这里如果foreach用了-parallel,就会导致无法访问外部的$availableMirros)
            $availableMirrors += $mirror
        }
        else
        {
            Write-Verbose "$mirror is not available "
            Write-Host "`t $mirror " -ForegroundColor Red
        }

        if ($pscmdlet.ParameterSetName -eq 'First')
        {

            if (($availableMirrors.Count -ge $First))
            {
                break #在foreach-object中会直接停止函数的运行,而使用传统foreach则是正常的
            }
        }
    } 
    if ($availableMirrors.Count -eq 0)
    {
        throw 'No mirrors are available!'
    }
    return $availableMirrors
}
function Test-LinksParallel
{
    <# 
    .SYNOPSIS
    为powershell 7+设计的并行测试链接是否能够在指定时间内响应
    #>
    [CmdletBinding()]
    param (
        $Mirrors = $GithubMirrors,
        $TimeOutSec = 2,
        $ThrottleLimits = 16
        # $First = 5
    )
    # 如果不是powershell 7报错
    if ($host.Version.Major -lt 7)
    {
        Throw 'PowerShell 7 or higher is required to run parallel foreach!'
        # return 
    }
    $availableMirrors = @()
    # 为了能够让$TimeOutSec能够被传递到子进程,这里使用了$env:来扩大其作用域
    # $env:TimeOutSec = $TimeOutSec
    # powershell提供了更好的方式访问并行scriptblock外的变量,使用$using: 这个关键字
    #然而这个关键字引用的变量无法更改(只读),可以考虑用.Net线程安全容器,或者用$env:来实现共享局部环境变量
    # $Envbak = $env:StopLoop
    # $env:StopLoop = 0
    # 创建线程安全容器(队列)
    $mirs = [System.Collections.Concurrent.ConcurrentQueue[Object]]::new()
    # $mirs.Enqueue('First_Demo')
    # Write-Host $mirs
    # 并行执行链接测试
    $Mirrors | ForEach-Object -Parallel {
        # if ([int]$env:StopLoop)
        # {
        #     return
        # }
        # Write-verbose $_
        #引用外部变量,并且赋值给简化的临时变量,方便后续引用(直接在-Parallel中引用外部变量是不合期望的)
        $mirs = $using:mirs
        $TimeOutSec = $using:TimeOutSec
        # $First = $using:First
        #  并行方案里用First参数指定前n个意义不大,而且会让代码变得复杂
        # Write-Verbose "mirs.cout=$($mirs.Count)" -Verbose
        # if ($mirs.Count -ge $First)
        # {
        #     # Write-Host $First
        #     Write-Verbose "The available links enough the $First !" -Verbose
        #     return
        # }
         

        $mirror = $_
        # Write-Debug "`$TimeOutSec=$env:TimeOutSec" -Debug #parallel 参数$DebugPreference无法起作用
        # if (Test-MirrorAvailability -Url $mirror -TimeoutSec $env:TimeOutSec)
        # 测试链接是否可用
        if (Test-MirrorAvailability -Url $mirror -TimeoutSec $TimeOutSec)
        {
            Write-Verbose "TimeOutSec=$TimeOutSec" # -Verbose
            Write-Host "`t $_" -ForegroundColor Green
            # Write-Output $mirror

            #写入队列
            $mirs.Enqueue($mirror)
            # 查看$mirs队列长度
            # $mirs.Count, $mirs

        }
        else
        {
            Write-Verbose "$mirror is not available "
            Write-Host "`t $mirror." -ForegroundColor Red
        }

    } -ThrottleLimit $ThrottleLimits 

    $availableMirrors = $mirs #.ToArray()
    if ($availableMirrors.Count -eq 0)
    {
        throw 'No mirrors are available!'
    }
    return $availableMirrors
}
function Test-MirrorAvailability
{
    <# 
    .SYNOPSIS
    测试指定链接是否在规定时间内相应
    .NOTES
    此函数主要用来辅助Test-LinksLinearly和Test-LinksParallel调用
    .DESCRIPTION
    如果及时正确相应,将链接打印为绿色,否则打印为红色
    #>
    [CmdletBinding()]
    param (
        [string]$Url,
        $TimeoutSec = 3
    )

    try
    {
        # 使用 Invoke-WebRequest 检查可用性
        $response = Invoke-WebRequest -Uri $Url -Method Head -TimeoutSec $TimeOutSec -ErrorAction Stop
        
        $availability = $response.StatusCode -eq 200
    }
    catch
    {
        $availability = $false
    }
    if ($VerbosePreference)
    {

        if ($availability)
        {

            Write-Host "Mirror $Url is available" -ForegroundColor Green
        }
        else
        {

            Write-Host "Mirror $Url is not available" -ForegroundColor Red
        }
    }
    return   $availability
}
function Get-AvailableGithubMirrors
{
    <#
    .SYNOPSIS
    列出流行的或可能可用的 GitHub 加速镜像站。
    列表中的镜像站可能会过期,可用性不做稳定性和可用性保证。

    .DESCRIPTION
    这里采用了多线程的方式来加速对不同镜像链接的可用性进行检查
    并且更容易获取其中相应最快的可用的镜像站,这是通过串行检查无法直接达到的效果
    .EXAMPLE
    

 .NOTES
    推荐使用 aria2 等多线程下载工具来加速下载,让镜像加速效果更加明显。
 
    .LINK
    # 镜像站搜集和参考
    https://github-mirror.us.kg/
    https://github.com/hunshcn/gh-proxy/issues/116
    #>
    [CmdletBinding()]
    param(
        $Mirrors = $GithubMirrors,
        $ThrottleLimits = 16,
        $TimeOutSec = 3,
        [switch]$ListView,
        [switch]$PassThru,
        [switch]$SkipCheckAvailability,
        # 是否启用串行地试探镜像可访问性(默认是并行试探)
        [switch]
        # [parameter(ParameterSetName = 'Serial')]
        [Alias('Serial')]$Linearly,
        # [parameter(ParameterSetName = 'Serial')]
        $First = 5
    )
    
    # 检查镜像站的可用性
   

    Write-Host 'Checking available Mirrors...'
    $availableMirrors = $Mirrors
    # 检查可用的镜像列表
    if (!$SkipCheckAvailability)
    {
        $psVersion = $host.Version.Major 
        # 默认尝试并行测试
        if ($psVersion -lt 7 -and !$Linearly)
        {

            Write-Host 'PowerShell 7 or higher is required to run parallel foreach!' -ForegroundColor Red
            Write-Host 'Testing Links Linearly...'
            $Linearly = $true
        }
        if ($Linearly ) #-or $PSVersion -lt 7
        {
            $availableMirrors = Test-LinksLinearly -Mirrors $Mirrors -TimeOutSec $TimeOutSec -First $First -Verbose:$VerbosePreference
        }
        else
        {
        
            $availableMirrors = Test-LinksParallel -Mirrors $Mirrors -TimeOutSec $TimeOutSec -ThrottleLimits $ThrottleLimits -Verbose:$VerbosePreference 
        }
    } 

    # Start-Sleep $TimeOutSec
    # 显示可用的镜像
    Write-Host "`nAvailable Mirrors:"
    # 空白镜像保留(作为返回值)
    $availableMirrors = @('') + $availableMirrors

    # 按序号列举展示
    Write-Host ' 0: Use No Mirror' -NoNewline
    $index = 1
    $availableMirrors | ForEach-Object {
        # $index = [array]::IndexOf($availableMirrors, $_)
        # if($availableMirrors[$index] -eq ""){continue}
        if ($_.Trim())
        {

            Write-Host " ${index}: $_" -NoNewline
            $index += 1
        }
   
        
        Write-Host ''
    }

    if ($PassThru)
    {
        return $availableMirrors
    }
}


function Get-SelectedMirror
{
    [CmdletBinding()]
    param (
        
        $Default = 1, # 默认选择第一个(可能是响应最快的)
        [switch]$Linearly,
        [switch]$Silent # 是否静默模式,不询问用户,返回第$Default个链接($Default默认为1)
    )
    $Mirrors = Get-AvailableGithubMirrors -PassThru -Linearly:$Linearly

    if (!$Silent)
    {
        # 交互模式
        $numOfMirrors = $Mirrors.Count
        $range = "[0~$($numOfMirrors-1)]"
        $num = Read-Host -Prompt "Select the number of the mirror you want to use $range ?(default: $default)"
        # $mirror = 'https://mirror.ghproxy.com'
        $n = $num -as [int] #可能是数字或者空$null
        if ($VerbosePreference)
        {
            
            Write-Verbose "`$n=$n"
            Write-Verbose "`$num=$num"
            Write-Verbose "`$numOfMirrors=$numOfMirrors"
        }
   
        #  如果输入的是空白字符,则默认设置为0
        if ( $num.trim().Length -eq 0)
        {
            Write-Host 'choose the Default 1'
            $n = $default
        }
        elseif ($n -notin 0..($numOfMirrors - 1))
        {
            Throw " Input a number within the range! $range"
        } 
    }
    else
    {
        $n = $default
    }
    if ($n -gt 0)
    {
        # 用户选择了一个合法的镜像代号(0表示不使用镜像)
        Write-Host "Selected mirror:[$n : " -NoNewline
        Write-Host "$($Mirrors[$n])" -BackgroundColor Gray -NoNewline
        Write-Host ']'#打印一个空行
    }
    $mirror = $Mirrors[$n]
    return $mirror
}


Get-AvailableGithubMirrors -ThrottleLimits $ThrottleLimits `
    -TimeOutSec $TimeOutSec -PassThru:$PassThru -SkipCheckAvailability:$SkipCheckAvailability `
     -Linearly:$Linearly -First $First 
     

使用示例

PS> .\GetMirrors.ps1 -PassThru -TimeOutSec 5 #参数补全列表
Mirrors                TimeOutSec             SkipCheckAvailability
ThrottleLimits         ListView               Linearly

默认使用并行检查,需要powershell7+

PS> .\GetMirrors.ps1  -TimeOutSec 5
Checking available Mirrors...
         https://gh.ddlc.top
         https://gh.con.sh
         https://github.moeyy.xyz
         https://cf.ghproxy.cc
         https://hub.gitmirror.com
         https://ghproxy.homeboyc.cn
         https://github.ur1.fun
         https://gh-proxy.com
         https://sciproxy.com
         https://ghps.cc
         https://ghproxy.net
         https://ghproxy.cc
         https://gh.noki.icu.
         https://mirror.ghproxy.com.
         https://slink.ltd.
....

Available Mirrors:
 0: Use No Mirror
 1: https://gh.ddlc.top
 2: https://gh.con.sh
 3: https://github.moeyy.xyz
 4: https://cf.ghproxy.cc
 5: https://hub.gitmirror.com
 6: https://ghproxy.homeboyc.cn
 7: https://github.ur1.fun
 8: https://gh-proxy.com
 9: https://sciproxy.com
 10: https://ghps.cc
 11: https://ghproxy.net
 12: https://ghproxy.cc

线性检查(支持powershell v5)

这里指定找出2个可用链接就结束查找(默认找5个)

PS C:\Users\cxxu\Desktop> .\TL.ps1 -Linearly -First 2
Checking available Mirrors...
         https://cf.ghproxy.cc
         https://gh.con.sh

Available Mirrors:
 0: Use No Mirror
 1: https://cf.ghproxy.cc
 2: https://gh.con.sh

powershell5中不指定Linearly参数也不会报错,自动切换为Linearly模式

PS C:\Users\cxxu\Desktop> .\GetMirrors.ps1 -First 2
Checking available Mirrors...
PowerShell 7 or higher is required to run parallel foreach!
Testing Links Linearly...
         https://cf.ghproxy.cc
         https://gh.con.sh

Available Mirrors:
 0: Use No Mirror
 1: https://cf.ghproxy.cc
 2: https://gh.con.sh

@pansong291
Copy link

pansong291 commented Sep 10, 2024

@xuchaoxin1375

巧了,我之前也写过差不多的。保存为 .html 文件,然后使用浏览器打开。

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
  <meta charset="UTF-8">
  <title>Github 镜像加速节点测试</title>
  <style>
    img {
      width: 64px;
      height: 64px;
    }

    * {
      font-family: "JetBrains Mono", source-code-pro, "SF Mono", Monaco, Menlo, Consolas, "Ubuntu Mono", "Liberation Mono", "DejaVu Sans Mono", "Courier New", -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji', monospace;
    }
  </style>
</head>
<body>
<h3>Github 镜像加速节点测试</h3>
<div><textarea id="ipt-mirrors" rows="10" cols="50" placeholder="输入镜像地址,每行一个">
https://github.moeyy.xyz
https://ghproxy.net
https://gh-proxy.com
https://gh-proxy.llyke.com
https://gh.cache.cloudns.org
https://gh.ddlc.top
https://slink.ltd
https://gh.con.sh
https://sciproxy.com
https://cf.ghproxy.cc
https://ghproxy.cn
https://ghproxy.cc
https://gh.jiasu.in
https://mirror.ghproxy.com
https://hub.gitmirror.com
https://ghps.cc
https://ghproxy.org
https://ghproxy.top
https://gh.ezctrl.cn
https://gh.sixyin.com
https://gh.bink.cc
https://gh.noki.icu
</textarea></div>
<div>
  <button id="btn-test-all">测试全部</button>
  <button id="btn-get-fastest">获取最快</button>
</div>
<div id="div-output"></div>
</body>
<script>
  const ipt_mirrors = document.getElementById('ipt-mirrors')
  const btn_test_all = document.getElementById('btn-test-all')
  const btn_get_fastest = document.getElementById('btn-get-fastest')
  const div_output = document.getElementById('div-output')

  const testAllMirror = async (mirrors) => {
    return Promise.allSettled(mirrors.map((mirror) => {
      if (!mirror.endsWith('/')) mirror += '/'
      return new Promise((resolve, reject) => {
        const imgElm = document.createElement('img')
        imgElm.alt = mirror
        imgElm.title = mirror
        imgElm.onload = resolve
        imgElm.onerror = reject
        imgElm.src = `${mirror}https://raw.githubusercontent.com/pansong291/Pictures/master/watermark/success.svg?t=${Date.now()}`
        div_output.append(imgElm)
      })
    }))
  }

  const findMirror = async (mirrors) => {
    const xhrs = mirrors.map((mirror) => {
      if (!mirror.endsWith('/')) mirror += '/'
      const xhr = new XMLHttpRequest()
      xhr._mirror = mirror
      xhr.open('GET', `${mirror}https://raw.githubusercontent.com/pansong291/Pictures/master/test.png?t=${Date.now()}`)
      return xhr
    })
    const promises = xhrs.map((xhr) => new Promise((resolve, reject) => {
      xhr.addEventListener('abort', reject)
      xhr.addEventListener('error', reject)
      xhr.addEventListener('timeout', reject)
      xhr.addEventListener('load', (e) => resolve(e.target?._mirror))
      xhr.send()
    }))
    let fastest = null
    try {
      fastest = await Promise.any(promises)
      xhrs.forEach((xhr) => xhr.abort())
    } catch (e) {
      console.error('all failed', e)
    }
    return fastest
  }

  const getMirrors = () => ipt_mirrors.value.split(/\s+/).filter((it) => !!it)

  const setButtonDisabled = (disabled) => {
    if (disabled) {
      btn_test_all.setAttribute('disabled', 'disabled')
      btn_get_fastest.setAttribute('disabled', 'disabled')
    } else {
      btn_test_all.removeAttribute('disabled')
      btn_get_fastest.removeAttribute('disabled')
    }
  }

  btn_test_all.addEventListener('click', () => {
    setButtonDisabled(true)
    div_output.innerText = ''
    testAllMirror(getMirrors()).then(() => {
      const pElm = document.createElement('p')
      pElm.innerText = '测试结束'
      div_output.append(pElm)
      setButtonDisabled(false)
    })
  })

  btn_get_fastest.addEventListener('click', () => {
    setButtonDisabled(true)
    div_output.innerText = ''
    findMirror(getMirrors()).then((mirror) => {
      const pElm = document.createElement('p')
      pElm.innerText = mirror || '全部失败'
      div_output.append(pElm)
      setButtonDisabled(false)
    })
  })
</script>
</html>

@xuchaoxin1375
Copy link

@pansong291 也挺方便的,我原本是在windows上使用scoop,希望整合为一个国内加速版的scoop 软件安装器部署脚本,现在我的电脑上70%的软件通过scoop安装(感谢spc这个bucket项目)
虽然有些软件缺失,或者安装时报错或者版本更新不及时,但是总得来说还算满意,起码可以当个下载器来用

@sky22333
Copy link

纯小白写了一个通过服务器中转下载文件和docker镜像的项目,支持docker一键部署,欢迎大佬一起pr优化

项目地址

@tkkcc
Copy link

tkkcc commented Oct 14, 2024

bash版连接测试,16并发,共132个,可用99个(电信)

script
#!/usr/bin/env bash
set -e
test_ghproxy() {
  local list=(
    101.32.202.184:10086
    101.43.36.238:4080
    111.229.117.180:2068
    111.229.21.57:12345
    119.28.4.250
    124.156.150.245:10086
    124.156.158.242:4000
    124.223.88.224:12345
    13.230.117.137:8008
    130.162.130.196
    136.243.215.211:12345
    138.2.123.193:8090
    138.2.54.229:12580
    138.2.69.119:30001
    139.196.123.118:12345
    140.238.17.136:9980
    140.238.33.157:3000
    141.147.170.49
    150.138.79.19:12345
    152.67.215.236:12345
    152.67.215.57:8081
    152.67.219.235:8989
    152.70.36.140:88
    152.70.94.22:9080
    154.23.187.126
    155.248.180.127:3000
    158.101.152.90:8123
    158.180.92.175:8000
    16.163.43.131:880
    212.50.233.214:8888
    38.207.160.46:6699
    42.193.4.156:8880
    43.129.191.251:8088
    43.132.131.30:9999
    43.132.227.252:9090
    43.133.162.210:9000
    43.154.105.8:8888
    43.154.123.246
    43.154.99.97:1112
    43.163.230.97:800
    45.149.156.201:7080
    47.109.58.212:8082
    47.236.114.62:18080
    47.245.88.61
    47.75.211.166:5080
    47.95.0.182:2333
    51.195.241.253:8080
    74.48.108.189:10088
    8.210.13.120
    8.210.153.246:9000
    8.210.207.225:8888
    82.157.146.148:9001
    94.74.100.230:9010
    a.whereisdoge.work
    admin.whereisdoge.work
    autodiscover.whereisdoge.work
    blog.whereisdoge.work
    c0b0109d9439de57fe3c.ljw.ink
    cdn.moran233.xyz
    cf.ghproxy.cc
    cloud.whereisdoge.work
    cpanel.whereisdoge.work
    cpcalendars.whereisdoge.work
    cpcontacts.whereisdoge.work
    dev.xvzhenduo.topgh-proxy
    free.cn.eu.org
    g.blfrp.cn
    gh-proxy.com
    gh-proxy.llyke.com
    gh.222322.xyz
    gh.6yit.com
    gh.bink.cc
    gh.cache.cloudns.org
    gh.catmak.name
    gh.chaoyi996.com
    gh.con.sh
    gh.ddlc.top
    gh.ezctrl.cn
    gh.hlg.us.kg
    gh.jiasu.in
    gh.noki.eu.org
    gh.noki.icu
    gh.nxnow.top
    gh.pylas.xyz
    gh.qninq.cn
    gh.sixyin.com
    gh.xx9527.cn
    ghp.arslantu.xyz
    ghp.ci
    ghp.miaostay.com
    ghpr.cc
    ghproxy.cc
    ghproxy.cianogame.top
    ghproxy.cn
    ghproxy.friendsa.onflashdrive.app
    ghproxy.homeboyc.cn
    ghproxy.lainbo.com
    ghproxy.mengluowusheng.workers.dev
    ghproxy.net
    ghproxy.org
    ghproxy.top
    ghps.cc
    git.19970301.xyz
    git.40609891.xyz
    git.669966.xyz
    github.iaor.asia
    github.moeyy.xyz
    github.muou666.com
    github.ur1.fun
    github.yeqingg.cn
    githubapi.jjchizha.com
    githubmirrors.iaor.asia
    githubproxy.iaor.asia
    gp.zkitefly.eu.org
    hub.gitmirror.com
    m.whereisdoge.work
    mail.whereisdoge.work
    mirror.ghproxy.com
    mtp.whereisdoge.work
    ql.133.info
    sciproxy.com
    slink.ltd
    v.whereisdoge.work
    webdav.camus.xyz
    webdisk.whereisdoge.work
    www.ghpr.cc
    www.subook.link:88
    www.ten-year.link
    x.whereisdoge.work
    xxqg.168828.xyz:8088
    y.whereisdoge.work
    zipchannel.top:4000
  )
  for proxy in ${list[@]}; do
    (
      local url=http://$proxy/https://raw.githubusercontent.com/LSPosed/LSPosed/refs/heads/master/app/.gitignore
      local length=$(curl -s -L -m10 $url | wc -c)
      if [[ $length == 7 ]]; then
        echo $proxy
      fi
    ) &
    while [[ $(jobs | wc -l) -ge 16 ]]; do
      sleep 0.1
    done
  done
  wait
}

test_proxy
可用
101.32.202.184:10086
101.43.36.238:4080
111.229.117.180:2068
119.28.4.250
124.156.150.245:10086
124.156.158.242:4000
13.230.117.137:8008
130.162.130.196
136.243.215.211:12345
138.2.123.193:8090
138.2.54.229:12580
138.2.69.119:30001
139.196.123.118:12345
140.238.17.136:9980
140.238.33.157:3000
141.147.170.49
150.138.79.19:12345
152.67.215.236:12345
152.67.215.57:8081
152.67.219.235:8989
152.70.36.140:88
152.70.94.22:9080
155.248.180.127:3000
158.101.152.90:8123
158.180.92.175:8000
16.163.43.131:880
212.50.233.214:8888
38.207.160.46:6699
43.129.191.251:8088
43.132.227.252:9090
43.133.162.210:9000
43.154.105.8:8888
43.154.123.246
43.154.99.97:1112
43.163.230.97:800
45.149.156.201:7080
47.109.58.212:8082
47.236.114.62:18080
47.245.88.61
47.75.211.166:5080
47.95.0.182:2333
51.195.241.253:8080
74.48.108.189:10088
8.210.13.120
8.210.153.246:9000
8.210.207.225:8888
82.157.146.148:9001
94.74.100.230:9010
a.whereisdoge.work
admin.whereisdoge.work
autodiscover.whereisdoge.work
blog.whereisdoge.work
cdn.moran233.xyz
cf.ghproxy.cc
cloud.whereisdoge.work
cpanel.whereisdoge.work
cpcalendars.whereisdoge.work
cpcontacts.whereisdoge.work
g.blfrp.cn
gh-proxy.com
gh-proxy.llyke.com
gh.222322.xyz
gh.6yit.com
gh.catmak.name
gh.con.sh
gh.nxnow.top
gh.pylas.xyz
gh.sixyin.com
gh.xx9527.cn
ghp.arslantu.xyz
ghp.ci
ghp.miaostay.com
ghpr.cc
ghproxy.cc
ghproxy.cianogame.top
ghproxy.cn
ghproxy.homeboyc.cn
ghproxy.lainbo.com
ghps.cc
git.19970301.xyz
git.40609891.xyz
git.669966.xyz
github.moeyy.xyz
github.muou666.com
hub.gitmirror.com
m.whereisdoge.work
mail.whereisdoge.work
mirror.ghproxy.com
mtp.whereisdoge.work
ql.133.info
slink.ltd
v.whereisdoge.work
webdav.camus.xyz
webdisk.whereisdoge.work
www.ghpr.cc
x.whereisdoge.work
xxqg.168828.xyz:8088
y.whereisdoge.work
zipchannel.top:4000

@keleyaa
Copy link

keleyaa commented Nov 1, 2024

感谢作者的贡献
https://ghp.ml1.one/
https://ghp.keleyaa.com/
第一个日本VPS G口带宽
第二个CFWORK的
有需要的可以把我的也加上 请勿去滥用哈

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests