最近在使用极强检测时看到了有检测蓝秦云网盘链接的的API,我就想着自己写一个API接口来用用。之前我们使用了腾讯云的云函数服务,我们这里接着整就行了。

如果有对云函数服务不清楚的,可以前去看我的这篇文章:《API接口上云|Serverless云函数服务部署实战

云盘检测

这里我们以百度网盘和蓝秦云盘为例,其他网盘也是同理,照着葫芦画瓢。我这里以PHP代码为例,有兴趣地用Python或者Node.js写也行。

蓝秦云

首先来个简单的蓝秦云网盘,我们首先找一个蓝秦云网盘的链接,实在找不到就自己上传一个文件到蓝秦云网盘,然后复制分享链接到浏览器中打开,并在云函数的日志中查看获取到的内容。

不过我们需要注意的是,分享的链接有两种,一种无密码另一种带有分享密码,所以只做一个判断会显得单一。为了更好地符合逻辑性,我这里选择判断文件失效的情况。

链接失效

蓝秦云的链接失效包含两种情况:

  • 来晚啦…文件取消分享了
  • 文件不存在,或已删除

这两种情况,我们只需要取其中的关键词即可,例如「取消」、「不存在」,获取到这两个关键词的任意一个即可判断蓝秦云分享链接失效。

判断代码

function lanzou_check( $url ) {
    $content = curl_file_get_contents( $url );
    $data = [];
    if ( strpos( $content, '不存在' ) || strpos($content,'取消')) {
            $data = array(
            'code' => '404',
            'pan_type' => 'lanzou', 
            'msg'=>'Error',
            'isexist'=>'false'
        );

    }
    else{
            $data = array(
            'code' => '200',
            'pan_type' => 'lanzou',
            'msg'=>'success',
            'isexist'=>'true'
        );
    }
    return $data;
}

代码如上,其中curl_file_get_contents需要各位自己去封装下,或者用file_get_content也行,不过这个函数有点风险,如果是利用服务器搭建的api不推荐用这个函数。

百度云盘

百度云盘的分享链接就有一点特殊,他的分享链接页面其实存在一个跳转,不过我们在浏览器中一般是察觉不到的。

例如我这里有个百度云盘的分享链接:

https://pan.baidu.com/s/1WsIU8KU3ZZGrHerJNSDC3g

获取到的页面内容其实是以下内容,所以说上面这个链接并不是我们文件的分享链接,下方这个才是。

Redirecting to <a href="/share/init?surl=WsIU8KU3ZZGrHerJNSDC3g">/share/init?surl=WsIU8KU3ZZGrHerJNSDC3g</a>

真正的网盘分享链接其实是:

https://pan.baidu.com/share/init?surl=WsIU8KU3ZZGrHerJNSDC3g

所以在编写的过程中,我们需要两次获取页面内容,才能实现判断效果,这里获取a标签内的链接可以使用正则匹配或者你自己去封装一个get_between函数也行。

//正则匹配代码
$str = '';
$isMatched = preg_match('/(?:[^_]+(?=\.html))|[^>]+(?=<\/a>)/', $str, $matches);
var_dump($isMatched, $matches);
function get_between($input, $start, $end) {
  $substr = substr($input, strlen($start)+strpos($input, $start),
 (strlen($input) - strpos($input, $end))*(-1));
  return $substr;
}

链接失效

  • 啊哦,来晚了,该分享文件已过期
  • 啊哦,你所访问的页面不存在了

判断是否存在「提取码」文字字样即可判断链接是否有效,其他方法也可自编写,不过目前存在验证码,以前有种方法可以绕过,不过现在能不能就不是很清楚了。

判断代码

function baidu_check( $url ) {
    $content = curl_file_get_contents( $url );
    $real_url = get_between($content,'>/','</a>.');
    $content = curl_file_get_contents('https://pan.baidu.com/'.$real_url);
    var_dump($content);
    $data=[];
    if ( strpos( $content, '提取码' ) == false )
    {
            $data = array(
            'code' => '404',
            'pan_type' => 'baidu', 
            'msg'=>'Error',
            'isexist'=>'false'
        );

    }
    else {
            $data = array(
            'code' => '200',
            'pan_type' => 'baidu',
            'msg'=>'success',
            'isexist'=>'true'
        );

    }
    return $data;
}

效果展示

通用网盘下载链接检测_Serverless云函数应用插图2

后续一系列的API将在:「EswinkAPI」平台上线,欢迎各位的到访!