diff options
| -rw-r--r-- | Live2dHistoire/live2d/js/message.js | 4 | ||||
| -rw-r--r-- | _data/other_repo_list.csv | 230 | ||||
| -rw-r--r-- | _layouts/post.html | 4 | ||||
| -rw-r--r-- | _posts/2025-11-01-mirrors.md | 91 |
4 files changed, 316 insertions, 13 deletions
diff --git a/Live2dHistoire/live2d/js/message.js b/Live2dHistoire/live2d/js/message.js index ebf821f..08d1675 100644 --- a/Live2dHistoire/live2d/js/message.js +++ b/Live2dHistoire/live2d/js/message.js @@ -201,9 +201,9 @@ if (!norunFlag) { eventFlag = true; } var data = JSON.parse(event.data); - if (data.response) { + if (data.response) { outputContainer.textContent += data.response; - } + } } } } else { diff --git a/_data/other_repo_list.csv b/_data/other_repo_list.csv index 65bbd63..7ae0b6e 100644 --- a/_data/other_repo_list.csv +++ b/_data/other_repo_list.csv @@ -69,7 +69,6 @@ https://git.tanxhub.com/mayx/blog https://git.expiera.com/mayx/blog https://gitea.nongnghiepso.com/mayx/blog https://codes.tools.asitavsen.com/mayx/blog -https://gitea.kursatessiz.com/mayx/blog https://git.siin.space/mayx/blog http://47.117.26.49:3000/mayx/blog http://122.116.190.233:3001/mayx/blog @@ -152,12 +151,10 @@ https://git.Apture.io/mayx/blog https://git.dbfmp.cn/mayx/blog http://103.231.8.120/mayx/blog https://gitea.jasonstolle.com/mayx/blog -https://git.istsoft.ru/mayx/blog http://8.134.61.107:3000/mayx/blog http://47.107.88.161:3000/mayx/blog https://git.ktk-pc.de/mayx/blog http://git.open-dev.ru/mayx/blog -http://101.132.113.255:3000/mayx/blog https://gitea.zybc.online/mayx/blog https://git.votava.org/mayx/blog http://8.137.12.29:3000/mayx/blog @@ -297,7 +294,6 @@ https://git.campfiregg.ru/mayx/blog https://gitea.net50.ne.jp/mayx/blog https://git.ism-dev.net/mayx/blog http://sinzero.xyz:3000/mayx/blog -http://69.10.53.202:3000/mayx/blog https://gitea.b54.co/mayx/blog https://git.matevi.sh/mayx/blog http://www.pcaidiy.cn:3000/mayx/blog @@ -310,7 +306,6 @@ http://1.95.221.174:3000/mayx/blog https://git.wangxinlei.cn/mayx/blog http://101.200.74.121:3000/mayx/blog http://123.56.193.182:3000/mayx/blog -https://git.akarpov.ru/mayx/blog http://60.204.131.99:3000/mayx/blog http://femail.email:8418/mayx/blog http://47.93.56.66:8080/mayx/blog @@ -377,9 +372,7 @@ http://47.101.58.33:3000/mayx/blog https://git.johnen.biz/mayx/blog https://git.unitsoft.io/mayx/blog https://gitea.synapsetec.cn/mayx/blog -http://124.222.211.253:3000/mayx/blog http://47.121.207.193:3000/mayx/blog -http://git.pushecommerce.com/mayx/blog http://220.132.16.87:3000/mayx/blog https://git.tintinger.org/mayx/blog http://gitea.yunshanghub.com:8081/mayx/blog @@ -470,7 +463,6 @@ http://39.106.86.127:3000/mayx/blog https://git.techspec.pro/mayx/blog http://47.92.23.211:3000/mayx/blog http://120.26.108.239:9188/mayx/blog -http://felicitiz.fr/mayx/blog https://git.van-peeren.de/mayx/blog http://gitea.msadb.cn/mayx/blog https://git.changenhealth.cn/mayx/blog @@ -514,7 +506,6 @@ https://git.hotolab.win/mayx/blog https://home.zhupei.me:3000/mayx/blog https://gitea.theaken.com/mayx/blog https://git.ja-schwarz.de/mayx/blog -https://git.obicloud.net/mayx/blog https://shanewan.cn:30000/mayx/blog https://git.xemo-net.de/mayx/blog https://git.bigtravelchat.com/mayx/blog @@ -601,7 +592,6 @@ https://forge.coreymclark.com/mayx/blog http://ems.iclematis.com:30000/mayx/blog https://git.micahmoore.io/mayx/blog https://git.zlyum.com/mayx/blog -https://git.alexerdei.co.uk/mayx/blog https://git.aelhost.com/mayx/blog https://schokigeschmack.de/mayx/blog https://git.anatid.net/mayx/blog @@ -628,3 +618,223 @@ https://forgejo.win/mayx/blog https://gitea.katiethe.dev/mayx/blog https://gitea.ai-demo.duckdns.org/mayx/blog https://git0.zpqrtbnk.net/mayx/blog +http://159.203.33.179:3000/mayx/blog +http://117.72.114.197:3000/mayx/blog +http://192.210.186.179:20051/mayx/blog +https://git.ashcloud.com/mayx/blog +http://us2.fornoone.top:3000/mayx/blog +https://git.louislabs.com/mayx/blog +https://ste-van.de/mayx/blog +https://git.novaa.xyz/mayx/blog +https://gitea.noname-studios.es/mayx/blog +http://101.46.208.93:3000/mayx/blog +http://45.93.137.91:3000/mayx/blog +https://git.smartdev.cz/mayx/blog +http://23.94.57.60:3000/mayx/blog +http://120.26.116.145:3000/mayx/blog +https://git.atomos.io/mayx/blog +https://git.tylantyson.com/mayx/blog +https://watch.mommys.plumbing/mayx/blog +https://devkona.net/mayx/blog +https://gitea.avixc-nas.myds.me/mayx/blog +http://www.ggafrik.site/mayx/blog +https://gitea.chaopi.dev/mayx/blog +https://git.jonasjones.dev/mayx/blog +https://gitea.kaidodev.org/mayx/blog +http://118.196.23.96:1866/mayx/blog +http://47.119.120.128:8085/mayx/blog +http://sjhome.cloud:3000/mayx/blog +https://gitea.sciotech.cn/mayx/blog +https://manage.gitea.djangoadmin.cn/mayx/blog +http://8.148.220.5:8089/mayx/blog +http://8.140.250.85:3000/mayx/blog +https://gitea.damconsulting.llc/mayx/blog +http://8.134.11.35:3000/mayx/blog +https://dev.ilink-app.com/mayx/blog +https://git.ctx.dev/mayx/blog +https://git.nailoong.me/mayx/blog +https://w2k.sh/mayx/blog +http://82.157.205.190:3000/mayx/blog +https://nas.szwyll.com:3000/mayx/blog +http://baylan.la.asu.edu:3000/mayx/blog +http://8.155.35.51:3000/mayx/blog +https://git.koppa.pro/mayx/blog +http://188.120.243.108:3000/mayx/blog +http://202.65.194.19:3000/mayx/blog +https://gitea.eggtech.net/mayx/blog +http://47.101.60.131:10082/mayx/blog +http://8.148.234.146:3001/mayx/blog +https://git.ypepin.com/mayx/blog +http://www.bzturbo.com.br/mayx/blog +https://git.maiasoft.jp/mayx/blog +https://git.athelas-conseils.fr/mayx/blog +https://git.churiland.com/mayx/blog +http://git.huangwc.com/mayx/blog +https://gitea.xala.dev/mayx/blog +http://101.201.34.43:3000/mayx/blog +https://git.ixu.me/mayx/blog +http://178.18.255.136:3000/mayx/blog +http://118.89.124.175:3000/mayx/blog +https://git.gloje-rinchen-dorjee-rinpoche-buddhist-monastery.org/mayx/blog +https://git.pxlbuzzard.com/mayx/blog +http://101.35.227.2:3000/mayx/blog +http://175.126.123.163:3000/mayx/blog +https://vw-git.senecasense.com/mayx/blog +http://git.uhfdemo.com/mayx/blog +http://47.108.217.75:3000/mayx/blog +https://git.jakubzabski.pl/mayx/blog +https://gitea.forgeandflowsolutions.com/mayx/blog +https://gitea.ybxsddb.cc/mayx/blog +https://www.git.omezaldama.xyz/mayx/blog +https://vila.go.ro/mayx/blog +https://git.olyntec.com/mayx/blog +http://8.134.218.17:8013/mayx/blog +https://www.invds.uk/mayx/blog +http://124.223.89.168:8080/mayx/blog +http://139.129.21.166:3000/mayx/blog +http://111.231.240.168:9082/mayx/blog +https://git.afonsosoares.com/mayx/blog +https://gitea.nswteam.net/mayx/blog +https://git.toad.city/mayx/blog +http://103.191.208.145:3000/mayx/blog +https://git.shawncarter.co.uk/mayx/blog +http://209.141.47.52:3000/mayx/blog +http://114.66.58.145:11501/mayx/blog +https://git.apfern.com/mayx/blog +http://120.46.213.136:9528/mayx/blog +http://120.26.115.132:3000/mayx/blog +http://47.103.155.22:3000/mayx/blog +http://dapainas.asia:5990/mayx/blog +http://60.204.158.188:3000/mayx/blog +https://zqz5.com/mayx/blog +https://git.3dizart.ru/mayx/blog +http://119.3.252.2:3000/mayx/blog +http://60.204.156.211:3000/mayx/blog +http://youneed.top:10014/mayx/blog +https://gitea.abra.me/mayx/blog +https://git.yukaige.com/mayx/blog +http://www.liubai.site:3000/mayx/blog +http://nas.bi1kbu.com:8418/mayx/blog +http://123.56.74.235:3000/mayx/blog +http://15.204.210.141:30121/mayx/blog +http://1.94.178.207:3000/mayx/blog +http://47.96.145.34:3000/mayx/blog +https://gitea.tsaida.synology.me/mayx/blog +http://xapple.ru:3000/mayx/blog +https://git.teygaming.com/mayx/blog +https://git.alhsk.top/mayx/blog +http://8.138.4.170:8980/mayx/blog +https://git.fishestlife.com/mayx/blog +http://185.128.138.246:3000/mayx/blog +http://210.211.116.85:3000/mayx/blog +http://osztromok.com:3164/mayx/blog +http://175.209.53.134:3030/mayx/blog +http://87.228.74.88:3000/mayx/blog +http://118.163.190.249:3000/mayx/blog +https://git.farmeris.sk/mayx/blog +http://39.107.226.169:3000/mayx/blog +https://git.ueda.sk/mayx/blog +http://113.45.76.155:3000/mayx/blog +http://47.100.28.88:3000/mayx/blog +http://168.138.196.70:3000/mayx/blog +http://39.96.211.118:3000/mayx/blog +https://git.server.isalem.net/mayx/blog +http://47.103.100.52:3000/mayx/blog +https://git.cos777nnn777.win/mayx/blog +http://5.189.140.23:8080/mayx/blog +https://gitea.xy88.fun/mayx/blog +http://8.134.253.216:8081/mayx/blog +http://121.37.47.20:3000/mayx/blog +https://code.metapipe.net/mayx/blog +https://gitea.alittlejag.uk/mayx/blog +https://git.antropix.dev/mayx/blog +http://15.237.198.144/mayx/blog +https://gitea.soap.wf/mayx/blog +http://123.249.119.122:3000/mayx/blog +http://183.6.120.101:30000/mayx/blog +http://134.122.173.191:3000/mayx/blog +https://git.kalinin.in/mayx/blog +http://8.138.81.5:3000/mayx/blog +https://xgit.tsuimg.top/mayx/blog +http://123.60.156.158:13000/mayx/blog +http://57.129.94.190:3000/mayx/blog +https://gitea.micro-stack.org/mayx/blog +https://vapor.solarvoid.com/mayx/blog +http://101.132.160.67:3000/mayx/blog +https://gitea.temp.brentgruber.com/mayx/blog +https://www.naepho.dev/mayx/blog +http://git.innoschool.org:3000/mayx/blog +https://www.know-how.store/mayx/blog +http://47.102.147.170:3050/mayx/blog +https://git.borg.unak.is/mayx/blog +http://209.38.235.254:3000/mayx/blog +http://52.66.204.217:3001/mayx/blog +http://123.60.153.169:3006/mayx/blog +https://pdje.uk/mayx/blog +http://172.236.250.154:3000/mayx/blog +http://54.198.134.152:3000/mayx/blog +http://121.41.35.226:11011/mayx/blog +http://47.111.1.12:3000/mayx/blog +https://nelgit.nelpi.co.uk/mayx/blog +http://47.108.156.251:3000/mayx/blog +http://8.141.91.86:3000/mayx/blog +https://git.hibikiame.com:3000/mayx/blog +https://www.yseven.net/mayx/blog +http://8.138.187.132:3000/mayx/blog +https://gitea.codeathome.ovh/mayx/blog +http://117.72.15.187:3000/mayx/blog +http://159.223.54.247:3030/mayx/blog +https://git.jaytux.com/mayx/blog +http://81.70.30.91:3000/mayx/blog +http://47.98.105.248:3000/mayx/blog +http://218.84.152.14:65001/mayx/blog +https://gitea.kisechan.space/mayx/blog +http://103.118.17.150:3000/mayx/blog +http://nas-home.top:8418/mayx/blog +http://140.238.9.133:3007/mayx/blog +http://8.138.100.115:3000/mayx/blog +https://git.soupcafe.cc/mayx/blog +https://git.mwapp.com.br/mayx/blog +http://yidaima.cn:6008/mayx/blog +https://git.happytanuki.kr/mayx/blog +http://213.199.46.54:3001/mayx/blog +http://47.94.156.73:3000/mayx/blog +http://185.126.237.57:3000/mayx/blog +http://47.97.50.232:3000/mayx/blog +http://106.54.211.95:3000/mayx/blog +http://210.245.20.73:3333/mayx/blog +http://43.248.97.109:3000/mayx/blog +http://git.dhitechnical.com/mayx/blog +http://113.207.86.104:3080/mayx/blog +http://down.luanhailiang.cn:9000/mayx/blog +http://39.96.195.72:10082/mayx/blog +http://8.140.60.82:3000/mayx/blog +https://gitea.klopfenstein.org/mayx/blog +http://8.148.24.160:3000/mayx/blog +https://gitea.hailstorm.gay/mayx/blog +http://hxu.ac.cn:3000/mayx/blog +https://gitea.codeopslag.nl/mayx/blog +http://221.219.181.35:30000/mayx/blog +https://git.cymnb.com/mayx/blog +http://8.163.31.138:3000/mayx/blog +http://47.108.27.137:3000/mayx/blog +http://182.92.9.236:3000/mayx/blog +http://47.96.98.191:9980/mayx/blog +http://172.172.102.93:3000/mayx/blog +http://101.132.255.70:3000/mayx/blog +http://139.196.179.195:3000/mayx/blog +http://115.120.245.164:3000/mayx/blog +http://120.27.19.58:30000/mayx/blog +https://git.devnul.cz/mayx/blog +https://git-virtual.ru/mayx/blog +http://47.122.125.40:16867/mayx/blog +https://git.infinitix.kr/mayx/blog +https://gitea.suchodupin.com/mayx/blog +http://8.134.116.217:3000/mayx/blog +http://117.72.219.18:6000/mayx/blog +http://47.99.144.51:3000/mayx/blog +https://git.rcdiamondgh.cc/mayx/blog +http://35.194.179.90:3000/mayx/blog +http://188.245.173.247:3080/mayx/blog +http://8.153.14.94:61308/mayx/blog +http://git.liubeiting.cn:8000/mayx/blog diff --git a/_layouts/post.html b/_layouts/post.html index 1de008b..54ae900 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -59,7 +59,9 @@ layout: default return; } else { const data = JSON.parse(event.data); - outputContainer.textContent += data.response; + if (data.response) { + outputContainer.textContent += data.response; + } } } }); diff --git a/_posts/2025-11-01-mirrors.md b/_posts/2025-11-01-mirrors.md new file mode 100644 index 0000000..a41f9e5 --- /dev/null +++ b/_posts/2025-11-01-mirrors.md @@ -0,0 +1,91 @@ +--- +layout: post +title: 让博客永恒的探索 +tags: [Git, Gitea, 镜像, Forever] +--- + + Mayx Forever Project – Phase II<!--more--> + +# 起因 + 在前段时间,我通过[Ecosyste.ms: Repos](https://github.com/ecosyste-ms/repos)找到了不少Git平台的实例,也在探索的过程中发现和了解了[Tilde社区](/2025/08/10/tilde.html)。当然仅仅是这样显然还不够,里面的实例太多了,显然还有一些其他值得探索的东西。 + 在我查看这里面的某些Gitea实例时,发现了一些奇怪的事情,有些实例的仓库数和用户数多得离谱,正常来说除了几个大的平台,绝大多数应该只有几十到几百个仓库,这就让我有点好奇了。于是当我点进去之后发现,里面有一大堆仓库都是空的,而且用户名和仓库名都非常有规律,看起来都是一组单词加4位数字命名的,显然这不是正常现象,应该是一种有组织的行为。 + +# 被SPAM滥用的Git实例 + 于是我就简单看了一下这些异常的仓库和用户的规律,可以发现每个用户都填了个人主页地址,然后个人简介里大都是一段广告词。另外这些个人主页的地址看起来很多都是利用公开可注册的服务,比如开源的有各种Git平台、Wiki,以及论坛,还有一些允许用户写个人主页的新闻网站。在这其中,Git平台大多都没有广告文章,基本上都是通过个人主页地址链接到网站,而Wiki之类的就会写一些篇幅比较长的广告文章。 + 另外这些平台但凡还在开放注册,就会被以大约每分钟一次的速度自动注册新账号……所以这种事情到底是谁在干呢?我翻了几个仓库,里面的广告多种多样,有些看起来还算正常,还有一些看起来有些黑产。其中我发现有一家叫做“悠闲羊驼SEO”的网站,看介绍主要是给加密货币、对冲基金和博彩网站提供SEO优化的,再加上这些被滥用的平台里也有不少类似的广告,所以我怀疑这些滥用的行为就是这家SEO公司做的(虽然没有证据😂)。 + +# 永恒的探索 + 看到这么多Git平台被滥用,我就有个想法,之前为了保证可靠性给博客加了不少[镜像](/proxylist.html),除此之外也在互联网档案馆、[Software Heritage](https://archive.softwareheritage.org/)、Git Protect等存档服务中上传了备份,而且也在IPFS和Arweave等Web3平台上有相应的副本,但是我觉得还不够,再大的平台也有可能会倒闭,IPFS不Pin还会被GC,至于Arweave前段时间看了一眼整个网络才几百个节点,感觉一点也不靠谱……所以我应该好好利用这些平台提高我博客的可靠性。 + 既然那些Spammer只是为了SEO去滥用这些平台,不如让我利用这些平台给我的博客进行镜像吧!至于使用哪个平台……显然用Git平台方便一些,所以接下来就该考虑一下怎么样分发了。 + +# 镜像的分发 + 在Git平台中也有很多选择,最知名的是GitLab,不过GitLab有点复杂,接口不太好用……而且很多实例没有开镜像仓库的功能,毕竟如果我每次更新都给一堆仓库推送太费时间了,我打算让各个平台主动从GitHub上拉取我的最新代码。正好Gogs系列的平台基本上都默认支持镜像仓库,不过在我实际使用的时候发现Gogs默认情况下注册要验证码……写识别验证码感觉又挺麻烦,而Gogs的两个分支——Gitea和Forgejo反倒没有……还挺奇怪,所以接下来我的目标主要就是Gitea和Forgejo的实例了。 + 既然决定好目标,我就得先发现它们了,那些Spammer在注册的时候会在个人主页里写不同的网站,其中也有一些类Gogs平台,那么我可以先找一个Gitea平台,用接口读取这些网站,然后再调类Gogs专属的接口来检测这些网站哪个是类Gogs平台,于是我就写了个[脚本](https://github.com/Mabbs/spam_gogs-like_scanner/blob/main/main.py)来找到它们。 + 找到这些平台之后就该注册了,还好Gitea和Forgejo默认没有验证码,注册起来也很简单,随便写了个函数实现了一下: +```python +def register_account(session, url, email, username, password): + try: + resp = session.get(url + "/user/sign_up") + soup = BeautifulSoup(resp.text, "html.parser") + csrf_token = soup.find("input", {"name": "_csrf"}).get("value") + + payload = { + "_csrf": csrf_token, + "user_name": username, + "email": email, + "password": password, + "retype": password, + } + headers = {"Content-Type": "application/x-www-form-urlencoded"} + resp = session.post(url + "/user/sign_up", data=payload, headers=headers) + if "flash-success" in resp.text: + print( + f"Successfully registered at {url} with username: {username}, email: {email}, password: {password}" + ) + save_to_file( + "instances_userinfo.csv", f"{url},{username},{email},{password}" + ) + return True + else: + print(f"Failed to register at {url}.") + return False + except Exception as e: + print(f"Error registering at {url}: {e}") + return False +``` + 注册完之后就该导入仓库了,只是通过模拟前端发包的方式在Gitea和Forgejo中不同版本的表现可能不太一样,所以我想用API实现,但是API又得有API Key,生成API Key还得模拟前端发包😥……所以怎么都绕不过。 + 不过这个生成API Key还挺麻烦,有些版本不需要配权限范围,有些配权限的参数还不一样……不过我就是随便一写,凑合用吧,像那些专业的Spammer应该是有更强大的脚本判断各种情况。 + 最后我还是选择用API导入,又写了个函数: +```python +def import_repos(token, url): + try: + response = requests.post( + url=url + "/api/v1/repos/migrate", + headers={ + "Authorization": "token " + token, + }, + json={ + "repo_name": "blog", + "mirror_interval": "1h", + "mirror": True, + "description": "Mayx's Home Page", + "clone_addr": "https://github.com/Mabbs/mabbs.github.io", + }, + ) + if response.status_code == 201: + print("Repository import initiated successfully.") + save_to_file("repo_list.txt", url + "/mayx/blog") + return True + else: + print(f"Failed to initiate repository import. Status code: {response.status_code}") + print(f"Response: {response.text}") + return False + except Exception as e: + print(f"Error updating website: {e}") + return False +``` + 脚本写好之后我就只需要重复扫描、注册、导入的步骤就行了,这样我的镜像就会越来越多,而且用类Gogs的实例还有一个好处就是不需要我手动推送,它会自动定时拉取我的仓库保持最新,这样也许只要人类文明存在我的博客就会在某处存在吧🤣。 + 最后我创建的Git镜像可以在[这里](/other_repo_list.html)看到,看起来还是挺壮观啊😋。只不过像这种会被Spammer随便注册的Git平台实例很难说它能活多久,如果没人管而且是云服务器也许到期就没了,有人管的话应该不会允许这么多Spam行为吧…… + +# 感想 + 不知道用“量”来确保博客的永恒更可靠……还是用“质”的方式更好呢?其实我觉得还得是活动的更好,就像我以前所说的,如果有[僵尸网络](/2024/11/02/trojan.html#%E6%84%9F%E6%83%B3),自动帮我执行发现并推送的操作,也许比等着这些实例逐渐消失更好吧……只不过那样可能就不太友好了😂。
\ No newline at end of file |
