精易论坛

标题: [PHP] 利用米哈游社区当网盘满速下载文件 [打印本页]

作者: eyyhs    时间: 2024-10-5 20:06
标题: [PHP] 利用米哈游社区当网盘满速下载文件


利用米游社的图片上传机制,伪装上传文件,实现全速下载!

可以理解为把米哈游的服务器当网盘,然后自己上传文件,下载速度是全速满带宽拉满!

在线例子:https://uuub.net/

此为PHP源码,放到网站直接访问即可!懂的人可以写成易语言形式!!!


[PHP] 纯文本查看 复制代码
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
    $file = $_FILES['file'];
    $url = file_get_contents('https://b.baipiao.wiki/link');
    // 已反代,源站https://video-oss.vercel.app/link
    $file_content = file_get_contents($file['tmp_name']);
   
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $file_content);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: image/jpeg'
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);
    if($file['type'] === "image/jpeg"){
        $upload_url = $url;
    }else{
        $upload_url = $url . '?response-content-type=' . $file['type'];
    }
    if (strpos($upload_url, 'https://plat-sh-community-prod-upload-ugc.oss-cn-shanghai.aliyuncs.com/') !== false) {
        $upload_url = str_replace('https://plat-sh-community-prod-upload-ugc.oss-cn-shanghai.aliyuncs.com/', 'https://upload-bbs.miyoushe.com/', $upload_url);
    }
   
    echo json_encode(['upload_url' => htmlspecialchars($upload_url)]);
    exit;
}elseif(isset($_GET['down'])){
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="index.php"');
    header('Content-Transfer-Encoding: binary');
    readfile('index.php');
}
?>

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.3/css/bootstrap.min.css">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <title>文件上传</title>
    <style>
        html, body {
            height: 100%;
            margin: 0;
            overflow: hidden;
        }
        .container {
            height: 100%;
        }
        .button-group {
            gap: 10px;
        }
    </style>
</head>
<body>
    <div class="container d-flex justify-content-center align-items-center">
        <div class="card" style="width: 30rem;">
            <div class="card-body">
                <h5 class="card-title text-center">望各位老板请把珍藏的.avi上传</h5>
                <form id="uploadForm" enctype="multipart/form-data">
                    <div class="mb-3">
                        <label for="file" class="form-label">选择文件</label>
                        <input type="file" class="form-control" id="file" name="file" required>
                    </div>
                    <button type="submit" class="btn btn-primary w-100">上传</button>
                </form>
                <div id="uploadStatus" class="mt-3" style="display:none;">
                    <div class="progress" style="height: 25px;">
                        <div id="progressBar" class="progress-bar progress-bar-striped" role="progressbar" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">正在上传中... 0%</div>
                    </div>
                </div>
                <div id="uploadLink" class="mt-3" style="display:none;">
                    <p>文件链接:</p>
                    <input type="text" id="link" class="form-control" readonly>
                    <div class="d-flex button-group mt-2">
                        <button id="copyButton" class="btn btn-success w-75">复制链接</button>
                        <button id="shareButton" class="btn btn-warning w-25">分享</button>
                    </div>
                </div>
                <br>
                <a href="?down">源码在这里下载嘞~~~!</a>
            </div>
        </div>
    </div>

    <script>
        $(document).ready(function() {
    $('#uploadForm').on('submit', function(event) {
        event.preventDefault();

        // Reset the progress bar and link when starting a new upload
        $('#uploadStatus').hide();
        $('#progressBar').css('width', '0%').attr('aria-valuenow', 0).text('正在上传中... 0%');
        $('#link').val(''); // Reset the link input
        $('#uploadLink').hide(); // Hide the upload link section

        $('#uploadStatus').show();

        var formData = new FormData(this);
        var xhr = new XMLHttpRequest();

        xhr.upload.addEventListener("progress", function(evt) {
            if (evt.lengthComputable) {
                var percentComplete = Math.round((evt.loaded / evt.total) * 100);
                $('#progressBar').css('width', percentComplete + '%').attr('aria-valuenow', percentComplete).text('正在上传中... ' + percentComplete + '%'); // 更新文本内容
            }
        }, false);

        xhr.onreadystatechange = function() {
            if (xhr.readyState === XMLHttpRequest.DONE) {
                if (xhr.status === 200) {
                    $('#progressBar').css('width', '100%').attr('aria-valuenow', 100).text('上传完成 100%');
                    var result = JSON.parse(xhr.responseText);
                    if (result.upload_url) {
                        $('#link').val(result.upload_url);
                        $('#uploadLink').show(); // Show the upload link section
                    } else {
                        alert('上传失败,错误信息: ' + xhr.responseText);
                    }
                } else {
                    alert('上传失败,错误信息: ' + xhr.statusText);
                }
            }
        };
        xhr.open("POST", '', true);
        xhr.send(formData);
    });

    $('#copyButton').on('click', function() {
        var copyText = document.getElementById("link");
        copyText.select();
        document.execCommand("copy");
        alert("链接已复制");
    });

    $('#shareButton').on('click', function() {
        var shareText = document.getElementById("link").value;

        if (navigator.share) {
            navigator.share({
                title: '分享链接',
                url: shareText
            }).then(() => {
                console.log('分享成功');
            }).catch((error) => {
                console.error('分享失败', error);
            });
        } else {
            alert("您的设备不支持分享功能。");
        }
    });
});

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.3/css/bootstrap.min.css">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <title>文件上传</title>
    <style>
        html, body {
            height: 100%;
            margin: 0;
            overflow: hidden;
        }
        .container {
            height: 100%;
        }
        .button-group {
            gap: 10px;
        }
    </style>
</head>
<body>
    <div class="container d-flex justify-content-center align-items-center">
        <div class="card" style="width: 30rem;">
            <div class="card-body">
                <h5 class="card-title text-center">文件上传</h5>
                <form id="uploadForm" enctype="multipart/form-data">
                    <div class="mb-3">
                        <label for="file" class="form-label">选择文件</label>
                        <input type="file" class="form-control" id="file" name="file" required>
                    </div>
                    <button type="submit" class="btn btn-primary w-100">上传</button>
                </form>
                <div id="uploadStatus" class="mt-3" style="display:none;">
                    <div class="progress" style="height: 25px;">
                        <div id="progressBar" class="progress-bar progress-bar-striped" role="progressbar" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">正在上传中... 0%</div>
                    </div>
                </div>
                <div id="uploadLink" class="mt-3" style="display:none;">
                    <p>文件链接:</p>
                    <input type="text" id="link" class="form-control" readonly>
                    <div class="d-flex button-group mt-2">
                        <button id="copyButton" class="btn btn-success w-75">复制链接</button>
                        <button id="shareButton" class="btn btn-warning w-25">分享</button>
                    </div>
                </div>
                <br>
                <a href="?down">源码在这里下载嘞~~~</a>
            </div>
        </div>
    </div>

    <script>
        $(document).ready(function() {
    $('#uploadForm').on('submit', function(event) {
        event.preventDefault();

        // Reset the progress bar and link when starting a new upload
        $('#uploadStatus').hide();
        $('#progressBar').css('width', '0%').attr('aria-valuenow', 0).text('正在上传中... 0%');
        $('#link').val(''); // Reset the link input
        $('#uploadLink').hide(); // Hide the upload link section

        $('#uploadStatus').show();

        var formData = new FormData(this);
        var xhr = new XMLHttpRequest();

        xhr.upload.addEventListener("progress", function(evt) {
            if (evt.lengthComputable) {
                var percentComplete = Math.round((evt.loaded / evt.total) * 100);
                $('#progressBar').css('width', percentComplete + '%').attr('aria-valuenow', percentComplete).text('正在上传中... ' + percentComplete + '%'); // 更新文本内容
            }
        }, false);

        xhr.onreadystatechange = function() {
            if (xhr.readyState === XMLHttpRequest.DONE) {
                if (xhr.status === 200) {
                    $('#progressBar').css('width', '100%').attr('aria-valuenow', 100).text('上传完成 100%');
                    var result = JSON.parse(xhr.responseText);
                    if (result.upload_url) {
                        $('#link').val(result.upload_url);
                        $('#uploadLink').show(); // Show the upload link section
                    } else {
                        alert('上传失败,错误信息: ' + xhr.responseText);
                    }
                } else {
                    alert('上传失败,错误信息: ' + xhr.statusText);
                }
            }
        };
        xhr.open("POST", '', true);
        xhr.send(formData);
    });

    $('#copyButton').on('click', function() {
        var copyText = document.getElementById("link");
        copyText.select();
        document.execCommand("copy");
        alert("链接已复制");
    });

    $('#shareButton').on('click', function() {
        var shareText = document.getElementById("link").value;

        if (navigator.share) {
            navigator.share({
                title: '分享链接',
                url: shareText
            }).then(() => {
                console.log('分享成功');
            }).catch((error) => {
                console.error('分享失败', error);
            });
        } else {
            alert("您的设备不支持分享功能。");
        }
    });
});

    </script>
</body>
</html>




作者: cqcc    时间: 2024-10-5 20:22
到时候文件删除了都不知道
作者: eyyhs    时间: 2024-10-5 20:24
cqcc 发表于 2024-10-5 20:22
到时候文件删除了都不知道

已经用了好几个月了,这个只是方便给其他人传输文件,当作临时网盘挺好的,可以全速下载!
作者: 学E到老    时间: 2024-10-5 20:39
不稳定,隔两天文件没了就好玩了。。只能临时用用
作者: 易酷    时间: 2024-10-5 20:40
为何上传这么慢呢,55m的上传了几分钟才上传完成,我是千兆带宽,上行带宽的话也是完全足够的
作者: 星有灵心    时间: 2024-10-5 20:42
限制多大的文件啊
作者: 神一样的人猫腻    时间: 2024-10-5 20:48
不稳定,只能临时用用
作者: kk4648    时间: 2024-10-5 20:56
功能总结:
通过反向代理 URL (https://b.baipiao.wiki/link) 获取目标上传地址。
通过 cURL 将用户上传的文件 PUT 到目标地址。
文件类型是 image/jpeg 时,直接上传。其他类型文件,自动添加 response-content-type 参数到 URL。
对某个特殊 URL 前缀 (https://plat-sh-community-prod-upload-ugc.oss-cn-shanghai.aliyuncs.com/),会进行域名替换,防止使用未经允许的上传地址。
支持下载 index.php 的源码,点击下载按钮时会下载当前的 PHP 文件。
作者: eyyhs    时间: 2024-10-5 20:59
星有灵心 发表于 2024-10-5 20:42
限制多大的文件啊

限制10个G
作者: eyyhs    时间: 2024-10-5 20:59
易酷 发表于 2024-10-5 20:40
为何上传这么慢呢,55m的上传了几分钟才上传完成,我是千兆带宽,上行带宽的话也是完全足够的 ...

因为部署在服务器,你的文件需要通过服务器中转,你可以把源码吃透,自己部署在本地,上传的速度就是你自己的带宽速度了~~~!
作者: eyyhs    时间: 2024-10-5 21:00
学E到老 发表于 2024-10-5 20:39
不稳定,隔两天文件没了就好玩了。。只能临时用用

已经用了大半年了,
作者: eyyhs    时间: 2024-10-5 21:05
关于在线例子上传慢的问题
因为要写个例子所以把项目部署到服务器了,上传的文件会先通过服务器中转在上传,服务器带宽低,所以上传会很慢
有能力的自己部署在本地,上传的速度就是你的带宽速度了~~!
作者: 艾玛克138    时间: 2024-10-5 21:30
感谢楼主无私奉献
作者: feiaiyou    时间: 2024-10-5 21:43
上传失败咋回事
作者: baitso    时间: 2024-10-5 21:55
支持开源~!感谢分享
作者: 憨憨问号    时间: 2024-10-6 00:29
天才!
作者: feiaiyou    时间: 2024-10-6 00:31
教教啊,我下了源码部署了怎么上传完下载回来是损坏文件啊
作者: 784326742    时间: 2024-10-6 01:09
哪天别人官方一个不高兴直接反手就是阻止,那就报废了
作者: 2269248626    时间: 2024-10-6 03:18
不会玩PHP   改了个html + nodejs  需要的可以下载   123盘地址https://www.123865.com/s/6alQjv-oPWvd
作者: 2269248626    时间: 2024-10-6 04:04
可惜不能编辑 能编辑就好玩了
作者: 1486688956    时间: 2024-10-6 06:16

作者: 1486688956    时间: 2024-10-6 06:34

作者: renhe2018    时间: 2024-10-6 06:51
相当的给力啊,支持。
作者: year1970    时间: 2024-10-6 07:23
感谢分享
作者: futiem    时间: 2024-10-6 07:56
利用米哈游社区当网盘满速
作者: ctry78985    时间: 2024-10-6 08:18
感谢分享
作者: 小虎来了    时间: 2024-10-6 10:08
感谢分享。谢谢啦
作者: wdh1991    时间: 2024-10-6 10:31
支持开源~!感谢分享
作者: wjswzj0    时间: 2024-10-6 10:51
感谢分享。谢谢啦
作者: q2350210076    时间: 2024-10-6 11:03
        感谢发布原创作品,精易因你更精彩!
作者: 734115266    时间: 2024-10-6 11:07
发布图片不是限制20m嘛
作者: 期待你发现    时间: 2024-10-6 11:50
       感谢发布原创作品,精易因你更精彩!
作者: chuanqibuding    时间: 2024-10-6 13:09
域名挺好看的。

作者: kyo9766    时间: 2024-10-6 16:49
上传界面很漂亮,感谢分享
作者: 一指温柔    时间: 2024-10-6 17:17
感谢分享
作者: 杨明煜    时间: 2024-10-6 17:34
真值得学习,感谢!......
作者: aochens    时间: 2024-10-7 00:00
为什么打开失败啊,损坏
作者: 1486688956    时间: 2024-10-7 06:38

作者: xiaoming007    时间: 2024-10-7 11:59
还有个进阶玩法,影视切片
作者: 已注销495509    时间: 2024-10-7 19:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 萧然    时间: 2024-10-8 10:01
老大,请教下,这个反代怎么设置?我设置了反代不好使,$url = file_get_contents('https://b.baipiao.wiki/link');     // 已反代,源站https://video-oss.vercel.app/link    你设置的这个就可以,感谢老大!
作者: 萧然    时间: 2024-10-8 10:49
kk4648 发表于 2024-10-5 20:56
功能总结:
通过反向代理 URL (https://b.baipiao.wiki/link) 获取目标上传地址。
通过 cURL 将用户上传的 ...

反代怎么设置的?我设置的反代无法获取到上传地址,知道是怎么设置的吗?
作者: wumengen    时间: 2024-10-8 14:20
为什么上传了成功  用直链下载很慢呀~
作者: 萧然    时间: 2024-10-8 15:32
工业和信息化部公告: 一、北京拓扑维度科技有限公司申请终止经营“.INK”“.WIKI”顶级域相关业务,并注销上述顶级域域名注册管理机构许可; 二、北京明智墨思科技有限公司申请终止经营“.VIP”“.BEER”“.LAW”“.WORK”“.FASHION”“.LUXE”“.YOGA”“.FIT”顶级域相关业务,并注销上述顶级域域名注册管理机构许可。 现进行公示,公示期自2024年9月20日至10月19日。 在公示期内,存有异议或发现其存在遗留用户善后问题的,请向工信部反映相关情况,并提供详细凭证和联系方式;在公示期内未收到异议的,将依法注销以上顶级域域名注册管理机构许可。
老大,你的反代域名马上不能用了

作者: yljgame520    时间: 2024-10-12 23:00
谢谢分享~~
作者: 胖子葛格    时间: 2024-10-15 18:33
感谢大神分享~!
作者: tx520    时间: 2024-11-8 17:07
老大,你的反代域名不能用了
作者: fangguisheng    时间: 2024-11-8 17:08
学习的阿三阿三阿三阿萨法发送
作者: 熊不熊    时间: 2024-12-4 10:42
感谢分享,很给力!~




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4