使用alist-detector批量搜索可挂载alist仓库

前言

前几天一直在找PaaS平台来嫖Alist玩,嫖了serv00搭了一个alist,看到Alist的说明文档上有可以挂载其他人的alist的玩法,于是就试着手动了一下,但是发现很麻烦,而且虽然默认alist支持挂载,但是为了防止被恶意挂载,alist还默认了guest无法访问,这就导致了出货率很低。一百个约有三四个能使用。
因此就尝试使用脚本来解决,其实写这个脚本还有一个目的就是有点想进阶一下爬虫的技术,用aiohttp的异步来提高速度。
但是实际上这个学习很不好上手,用ai生成的代码大多都不能合适运行,而且这个看起来有种抽象感,改了好几次才能勉强运行。

使用

地址:https://github.com/natro92/alist-detector

目标列表fofa导出的1w条。然后导出到txt中,放到根目录的ip.txt中,然后运行alist-detector.py即可
image.png
自动筛选出可以使用的,但是得到的结果有的是需要密码访问的,这个要实现检测要再写一层异步,懒得写了,有时间再改吧。且有几个ssl的处理每太处理好,会漏掉不少。
1w条检测大概只需要3分钟。因为有很多都无法访问了。
结果导出到outputs/下。

想法

主要是对

  • /api/public/settings 查看信息,主要获取的参数为 "allow_mounted": "false" 参数,来判断是否可以进行挂载处理。
  • /api/me 查看是否开放了guest用户权限。

两个api来获取信息。
有几个小trick挺费劲的。一个是大量任务时要记得限制单次操作的任务数,因为windows和linux会限制句柄数量,这里我限制在了400,用async with semaphore:来实现的限制数量。
本来想用gather来完成排序的,但是不知道为什么会报错。就用的土方法两个await。太暴力了。
还有就是Session的ssl取消验证,但是还是出问题了不知道为什么。
中间查询之后用:

1
2
policy = asyncio.WindowsSelectorEventLoopPolicy()
asyncio.set_event_loop_policy(policy)

可以解决部分的ssl问题,但是另一部分解决不了,而且这个仅仅支持windows系统。
这里的这个进度条给我加的有点蒙了。没写出来,gpt优化出来的
image.png
别的就没什么了,都是很基础的语法。用异步比硬请求快太多了。虽然不好写,但是用起来是真的爽。