[PHP] 网盘搜索引擎-采集爬取百度网盘分享文件实现网盘搜索

沐风 2020-08-08 303次浏览 0条评论 0 0 0
测试了下,文章种用的方法不知道怎么获取到uk,现在(2020年)百度网盘的分享链接格式还有另一种: https://pan.baidu.com/s/1o7U6SNw#list/path=/office2013 这种的也可以用https://pan.baidu.com/share/link?shareid=2434074159&uk=2651084301&fid=1039049442 下一篇主要介绍xunsearch分词和全文搜索和这次的完整代码(​只找到前两篇文章,没找到第三篇文章)|不知道获取订阅用户列表的接口的这个思路现在还能不能用 20201001

百度网盘分享链接有两种格式

https://pan.baidu.com/share/link?shareid=2434074159&uk=2651084301&fid=1039049442

https://pan.baidu.com/s/1o7U6SNw#list/path=/office2013


原文链接:https://www.cnblogs.com/taoshihan/p/6798719.html

https://www.cnblogs.com/taoshihan/p/6808575.html

标题起的太大了,都是骗人的。最近使用PHP实现了简单的网盘搜索程序,并且关联了微信公众平台。用户可以通过公众号输入关键字,公众号会返回相应的网盘下载地址。就是这么一个简单的功能,类似很多的网盘搜索类网站,我这个采集和搜索程序都是PHP实现的,全文和分词搜索部分使用到了开源软件xunsearch,现在就来介绍一下实现过程。

1. 获取一批网盘用户

2. 根据网盘用户获取分享列表

3. xunsearch实现全文检索和分词检索

4. 微信公众平台接口开发

功能展示:

d24838748d_normal.pngf333ada416_normal.png

获取并采集百度网盘用户

要想获取到分享列表,首先要先把百度的用户信息收集下来,现在我来介绍如何找到一大批百度的用户。先把浏览器的审查元素打开,查看HTTP的请求包,打开自己的百度网盘主页地址https://pan.baidu.com/pcloud/home,查看订阅的用户列表,观察请求。

50a9faa9c0_normal.png

https://pan.baidu.com/pcloud/friend/getfollowlist?... 这个请求就是获取订阅用户列表的接口。

上面的参数含义分别是:query_uk (我自己的id编号,百度都是以uk来命名的) ; limit (分页时每页显示的条数) ; start (分页起始编号) ; 剩下的参数全都并无任何卵用。

精简后的接口地址是:https://pan.baidu.com/pcloud/friend/getfollowlist?query_uk={$uk}&limit=24&start={$start}

处理分页的获取订阅者接口地址

先暂时假设,我订阅了2400个用户,这个数量基本够用了。每页显示24个用户,那么就会分100页,则先看如何生成这个100个url。

<?php
/*
* 获取订阅者
*/
class UkSpider{
    private $pages;//分页数
    private $start=24;//每页个数
    public function __construct($pages=100){
        $this->pages=$pages;
    }
    /**
    * 生成接口的url
    */
    public function makeUrl($rootUk){
        $urls=array();
        for($i=0;$i<=$this->pages;$i++){
            $start=$this->start*$i;
            $url="http://pan.baidu.com/pcloud/friend/getfollowlist?query_uk={$rootUk}&limit=24&start={$start}";
            $urls[]=$url;
        }
        return $urls;
    }
}

$ukSpider=new UkSpider();
$urls=$ukSpider->makeUrl(3317165372);
print_r($urls);

获取的url接口列表结果:

Array
(
    [0] => http://pan.baidu.com/pcloud/friend/getfollowlist?query_uk=3317165372&limit=24&start=0
    [1] => http://pan.baidu.com/pcloud/friend/getfollowlist?query_uk=3317165372&limit=24&start=24
    [2] => http://pan.baidu.com/pcloud/friend/getfollowlist?query_uk=3317165372&limit=24&start=48
    [3] => http://pan.baidu.com/pcloud/friend/getfollowlist?query_uk=3317165372&limit=24&start=72
    [4] => http://pan.baidu.com/pcloud/friend/getfollowlist?query_uk=3317165372&limit=24&start=96
    [5] => http://pan.baidu.com/pcloud/friend/getfollowlist?query_uk=3317165372&limit=24&start=120

使用CURL请求接口地址

请求接口地址时,可以直接使用file_get_contents()函数,但是我这里使用的是PHP的CURL扩展函数,因为在获取分享文件列表时需要修改请求的header头信息。

此接口返回的JSON信息结构如下

{
    "errno": 0,
    "request_id": 3319309807,
    "total_count": 3,
    "follow_list": [
        {
            "type": -1,
            "follow_uname": "热心***联盟",
            "avatar_url": "http://himg.bdimg.com/sys/portrait/item/7fd8667f.jpg",
            "intro": "",
            "user_type": 0,
            "is_vip": 0,
            "follow_count": 0,
            "fans_count": 21677,
            "follow_time": 1493550371,
            "pubshare_count": 23467,
            "follow_uk": 3631952313,
            "album_count": 0
        },
        {
            "type": -1,
            "follow_uname": "绾*兮",
            "avatar_url": "http://himg.bdimg.com/sys/portrait/item/fa5ec198.jpg",
            "intro": "万里淘金,为你推荐精品全本小说,满满的资源福利!",
            "user_type": 6,
            "is_vip": 0,
            "follow_count": 10,
            "fans_count": 5463,
            "follow_time": 1493548024,
            "pubshare_count": 2448,
            "follow_uk": 1587328030,
            "album_count": 0
        },
        {
            "type": -1,
            "follow_uname": "自**检票",
            "avatar_url": "http://himg.bdimg.com/sys/portrait/item/8c5b2810.jpg",
            "intro": "没事看点小说。",
            "user_type": 0,
            "is_vip": 0,
            "follow_count": 299,
            "fans_count": 60771,
            "follow_time": 1493547941,
            "pubshare_count": 13404,
            "follow_uk": 1528087287,
            "album_count": 0
        }
    ]
}

如果要做一个综合性的网盘搜索网站,就可以把这些信息全都存入数据库,现在我只是做一个很简单的小说搜索网站,因此只留下了订阅盘主的uk编号。...

登录 | 立即注册

更新于:2020-10-01 12:06:57
    您需要登录后才可以评论。 登录 | 立即注册
    相关内容

    这里专门开个帖子用来整理采集遇到的问题

    由于老哥采集遇到了很多问题,这里做个整理 2020406

    Linux中使用curl命令访问https站点4种常见错误和解决方法

    使用 curl 进行 ssl 认证 -文章是百度搜curl.cainfo找到的

    网上之前找的封装php curl的类,小巧且实用,用了挺久

    采集的时候把目标网页的内容输出到页面调试的问题

    curl超时的设置

    https://www.jianshu.com/p/0f7d7c6629f62019.08.01 15:01:15网上这方面内容其实蛮多了,但是我还是要记录下我这里实际应用的心得体会 ...

    php知识点学习整理

    这里记录php知识点学习整理 20200422

    PHP preg_quote() 函数

    PHP str_ireplace() 函数

    使用Laravel 5.4问题总结

    这里写下laravel5.4的总结,用laravel也有段时间了,优点就不用多说了,好上手,较易学较易用,blade模板是非常的好用,等等。laravel的缺点有几个,灵活性一般,框架稍...

    使用Laravel 5.4问题总结 Lost connection to MySQL server at 'reading initial communication ...

    Laravel 5.4各种错误提示总结

    使用Yii2遇到的问题整理

    Yii的东西很多,学习和使用的时候遇到了各种各样的问题,这里记录整理下,方便大家分享。composer安装kartik-v/yii2-mpdf时报错,这里记录下 Yii2用compos...

    Yii2用composer更新时遇到的错误

    Yii2 用composer update 时提示'git' 不是内部或外部命令,也不是可运行的程序或批处理文件

    Yii2​用composer安装kartik-v/yii2-mpdf时报错,成功解决后,再让其支持中文。

    使用Yii2的setFlash和bootstrap.min.js遇到的问题,bootstrap.min.js的bug?

    Yii2的action不支持大小写吗?其实是支持的

    composer install 使用tips-网上找的composer install的使用技巧方法

    推荐内容

    超省心游戏加速:Wireguard+udp加速(CentOS版)--(实测:超不省心),以后搜帖...

    Wireguard+udpspeeder+udp2raw游戏加速方案 ---------------------------------------错误报告及解决-----------...

    wireguard+udpspeeder+udp2raw多用户配置

    Wireguard+udpspeeder+udp2raw游戏加速方案改进版-实测有效

    基于CentOS7 Centos8平台搭建邮件服务器

    EwoMail​在Centos8上安装了,各种坑,各种报错。这个集成包太臃肿了。 20200416 EwoMail 已经弃用,国内的一家公司搞的坑爹产品。 20200418

    如何在RHEL8 / CentOS8上安装Webmin

    设置postfix作为邮件发送服务器

    U盘安装U盘启动-U盘启动盘一键U盘装系统

    https://www.upandashi.com/ 先要做U盘启动盘,然后下载Win7镜像或Win7的Ghost文件,放到U盘里,然后插在电脑上做系统,注意主板要改成U盘优先启动。 ...

    查问我看笔记功能的实现过程-全文搜索待开启,试试yiisoft/yii2-sphinx

    查问我看笔记功能的实现的重点就是全文搜索,如果不用Yii自带的ActiveRecord的话,就要找扩展,先找了个yii-xunsearch,不行太差了,又找了yiisoft/yii2-elasticsearch,...

    yii2框架中使用sphinx使用搜索引擎 多条件选择搜索

    运行php composer.phar require --prefer-dist yiisoft/yii2-sphinx

    MySQL数据库设计总结

    规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字...

    什么是B-Tree

    二叉查找树、平衡二叉树、红黑树、B-/B+树性能对比