cloudflarebitte.21.05.22

又搞了点cloudflare antics🤔

cloudflare workers

上次不是搞了几个.pp.ua域名吗,外加cloudflare可以用这种域名,是时候彻底白嫖cloudflare了🤔

由于某种申必原因,我发现了一个phpdisk网盘,可以随便上传东西和下东西🤔别看它是phpdisk搭建的,但居然没有vip也没有任何限制,草🤔我们可以用cloudflare workers搞搞它🤔

addEventListener("fetch", (event) => {
event.respondWith(
handleRequest(event).catch(
(err) => new Response(err.stack, { status: 500 })
)
);
});

async function handleRequest(event) {
const { request } = event;
const { pathname } = new URL(request.url);
const fileid = Number(pathname.split("/")[1].split(".")[0]);

if (fileid == 0){
return fetch("https://a.certain.url/soushuresult.html")
}

const bruh = await fetch("http://www.soushu1.com/ajax.php", {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0",
"Accept": "text/plain, */*; q=0.01",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Cache-Control": "max-age=0",
"Referer": "http://www.soushu1.com/viewfile.php?file_id="+fileid,
},
"body": "action=load_down_addr1&file_id="+fileid,
"method": "POST",
});

if (bruh.ok){
data = await bruh.text();
return fetch(data.split('"')[1], {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0",
"Accept": "text/plain, */*; q=0.01",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Cache-Control": "max-age=0",
"Referer": "http://www.soushu1.com/viewfile.php?file_id="+fileid,
},
"body": "action=load_down_addr1&file_id="+fileid,
"method": "POST",
});;
} else {
return "wiebitte?";
}
}

和任何phpdisk搭建起来的网盘系统一样,无论访问ajax.php还是访问最终的文件都需要正确的请求头,不然不会出想要的结果(指解析出链接和下载文件🤔return fetch这个好理解,但我们需要fetch两次,第一次fetch出ajax.php返回的结果,并从里面提取出链接(bash风格提取🤔第二次才return fetch,让cloudflare中转那个文件🤔

所以我需要了解javascript里面fetch的用法🤔反正fetch和fetch结果里面的text方法返回的都是promise,我也不清楚是啥意思,反正前面加await就能取出结果就是了🤔就这样我随手撸出来一个给出文件id就能直接下载文件的玩意🤔那么接下来我们可以挑战discord drive了(大嘘🤔

顺便来一个彩蛋:将cloudflare workers搞的链接用mpv打开,居然能播放,但出于某种申必原因没有界面也没有进度条,这可真是太草了🤔其实是因为它不支持按照range请求文件,那就别想随便调进度了,也别想多线程了(悲🤔

所以拿这玩意存片子还行,但在线观看还是别想了(

bruh

我发现我之前申请的两个.pp.ua域名被光速橄榄,不是tcp reset就是ssl阻断,可真是太tm草了🤔但目测那个workers.dev还能用🤔你们可以去试下testproject.wiebitte.workers.dev/任意数字🤔

我后来发现准确点来说是整个.pp.ua都被橄榄了,甚至nic.pp.ua,草🤔

improved

我偶然发现这个phpdisk站有一个叫做rss的玩意,尽管rss现在是没人用了,但它有个功能是列举出30个这个站的最新资源🤔这样说不定可以拿它挖掘出这个站的所有资源🤔

然后我读了下这个rss.php的源码(话说官网的最新源码比这个站的还要旧,我最后在github上找到一个),发现这个php里面最新的30个资源是通过sql语句写死的,所以没法拿这个php来遍历全站了🤔

但至少我们可以从这里搞到这个站当前最大的文件id,然后手工从1开始递增遍历🤔从网页里面可以挖掘出文件的各种信息,然后搞一个本地的数据库🤔甚至都不需要是个sql数据库,一个文本文件就可以了🤔由于它新增文件只会有更大的文件id,出现新文件只需要往这个文件后面追加,甚至可以写成cronjob🤔然后再写另外一个cronjob来对这个文件进行处理,先用tac颠倒一下,删除里面不存在的文件,然后对里面的每一项加上html标签,再输出成html,然后在上面的workers脚本里面,当发现fileid为0时直接输出这个html就好了,岂不美哉🤔

刚试了一把awk神器,比for循环处理每一行效率高出了114514倍🤔awk最适合处理这种每行都是用固定分隔符分割开的结构化(迫真)数据了🤔

thonk

在我看了下最新文件列表后,我发现这个phpdisk站原来是一个叫做搜书吧的小说站用来存小说的资源站,就像moopan是ddg的资源站一样🤔比如它们logo的字体都是同一个🤔naruhodo🤔

bruhfei

草,在我折腾了两天之后,那个站直接502关站大吉了,草的批爆🤔看来它的网管哪怕只有小学文化水平,也大概知道它的站发生了啥事吧(确信🤔等等,现在是上午4点(大嘘),我更倾向于认为就是那个站崩了,等重启吧(

发表评论