吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11463|回复: 34
收起左侧

[其他转载] 百度文库解析源码

[复制链接]
黄蜀黍 发表于 2019-10-6 16:12
[PHP] 纯文本查看 复制代码
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/7/21 0021
 * Time: 16:15
 */
// 生成用户 唯一值
function buildAppId()
{
    mt_srand((double)microtime() * 10000);//optional for php 4.2.0 and up.
    $charid = strtoupper(md5(uniqid(rand(), true)));
    $hyphen = chr(45);// "-"
    $uuid = substr($charid, 0, 8) . $hyphen
        . substr($charid, 8, 4) . $hyphen
        . substr($charid, 12, 4) . $hyphen
        . substr($charid, 16, 4) . $hyphen
        . substr($charid, 20, 12);
    return $uuid;
}

// 生成用户 key 值 用于存储用户信息

if (isset($_GET['build']) && $_GET['build'] == 1) {
    toJson("APPID生成成功", 200, ['APPID' => buildAppId()]);
}
//var_dump(buildAppId());die;

// 存储用户 唯一值 如果有人需要授权使用 则 生成appid 之后填写到这里 ,生成方法 在地址后面加上 build=1 即可生成
function appId()
{
    $data[] = '35FCB049-8B12-BB5B-69C6-3C31708B792C';//酷Q机器人调用
    $data[] = 'D19DDCB1-38FA-3F40-6A29-04CF98DAC19A';// ...
    $data[] = '0084DA25-0FAB-D163-099E-E9C67CF87E65';// ...
    $data[] = '9CA2B554-CCDC-72CF-34BD-AE704AF74F99';// ...
    return $data;
}

/**
 * 签名
 * [url=home.php?mod=space&uid=952169]@Param[/url] $appSecret
 * @param $params
 * [url=home.php?mod=space&uid=155549]@Return[/url] string
 */
function buildSign($appId, $params)
{
    unset($params['sign']);
    ksort($params);
    $text = '';
    foreach ($params as $k => $v) {
        $text .= $k . $v;
    }
    return strtoupper(md5(md5($appId . $text . $appId)));
}

if (!isset($_GET['appid']) || !$_GET['appid'] || !in_array($_GET['appid'], appId())) {
    toJson("授权失败", 400);
}
if (!isset($_GET['sign']) || !$_GET['sign']) {
    toJson("缺少签名参数、请重试", 400);
}
// 验证签名是否正确
$sign = buildSign($_GET['appid'], $_GET);
if ($sign != $_GET['sign']) {
    toJson("签名错误,请稍候重试", 400, $sign);
}

// 获取cookie
$cookie = '';

// 网络请求方法
function httpRequest($url, $method, $postfields = null, $headers = array(), $debug = false)
{
    $method = strtoupper($method);
    $ci = curl_init();
    /* Curl settings */
    curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
    curl_setopt($ci, CURLOPT_HTTPHEADER, array('Client_Ip: ' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255)));//优点:伪造成本低,通杀90%系统
    curl_setopt($ci, CURLOPT_HTTPHEADER, array('X-Forwarded-For: ' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255)));//优点:伪造成本低,通杀90%系统
    curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");
    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60); /* 在发起连接前等待的时间,如果设置为0,则无限等待 */
    curl_setopt($ci, CURLOPT_TIMEOUT, 7); /* 设置cURL允许执行的最长秒数 */
    curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
    switch ($method) {
        case "POST":
            curl_setopt($ci, CURLOPT_POST, true);
            if (!empty($postfields)) {
                $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;
                curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr);
            }
            break;
        default:
            curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */
            break;
    }
    $ssl = preg_match('/^https:\/\//i', $url) ? TRUE : FALSE;
    curl_setopt($ci, CURLOPT_URL, $url);
    if ($ssl) {
        curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
        curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
    }
    //curl_setopt($ci, CURLOPT_HEADER, true); /*启用时会将头文件的信息作为数据流输出*/
    curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ci, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/
    curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ci, CURLINFO_HEADER_OUT, true);
    /*curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); * *COOKIE带过去** */
    $response = curl_exec($ci);
    $requestinfo = curl_getinfo($ci);
    $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
    if ($debug) {
        echo "=====post data======\r\n";
        var_dump($postfields);
        echo "=====info===== \r\n";
        print_r($requestinfo);
        echo "=====response=====\r\n";
        print_r($response);
    }
    curl_close($ci);
    return $response;
    //return array($http_code, $response,$requestinfo);
}

// 响应 json 格式的参数
function toJson($msg, $code = 200, $data = [])
{
    header('Content-Type:application/json; charset=utf-8');
    $array['msg'] = $msg;
    $array['code'] = $code;
    $array['data'] = $data;
    exit(json_encode($array));
}

// 短网址转换
function baiDuDwz($longUrl)
{
    $host = 'https://dwz.cn';
    $path = '/admin/v2/create';
    $url = $host . $path;
    $method = 'POST';
    $content_type = 'application/json';

// TODO: 设置Token
    $token = 'd7852c1ffabbf77670845258309ae352';

// TODO:设置待注册长网址
    $bodys = array('Url' =>$longUrl, 'TermOfValidity' => 'long-term');

// 配置headers
    $headers = array('Content-Type:' . $content_type, 'Token:' . $token);

// 创建连接
    $curl = curl_init($url);
    $ssl = preg_match('/^https:\/\//i', $host) ? TRUE : FALSE;
    curl_setopt($curl, CURLOPT_URL, $url);
    if ($ssl) {
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
    }
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_FAILONERROR, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($bodys));

// 发送请求
    $response = curl_exec($curl);
    curl_close($curl);

// 读取响应
    if (!$response){
        return $longUrl;
    }
    try{
        $response = json_decode($response,true);
    }catch (Exception $e){
        toJson('数据获取失败', 400);
    }
    if ($response['Code'] == 0 && $response['ShortUrl']){
        return $response['ShortUrl'];
    }else{
        return $longUrl;
    }
}

// 截取文档ID
$url = isset($_GET['url']) ? $_GET['url'] : '';
if (!$url) {
    toJson('url参数不正确', 400);
}
$id = strstr(substr($url, strripos($url, "/") + 1), '.', true);
$time = time();
$url = 'https://study.baidu.com/api/p/doc/view/download?doc_id=' . $id . '&t=' . $time . '&fastdown=undefined&t=1559828438675&fr=4';

//文档下载链接 = 网页_访问S (“https://study.baidu.com/api/p/doc/view/download?doc_id=” + 文件ID + “&fastdown=undefined&t=1559828438675&fr=4”, 0, “doc_id=” + 文件ID + “&fastdown=undefined&t=1559828438675&fr=4”, “BAIDUID=0FF2BDE0EC48DAEF1B7333B68B15EAD9:FG=1; BIDUPSID=0FF2BDE0EC48DAEF1B7333B68B15EAD9; PSTM=1559780736; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; delPer=0; BDRCVFR[tFA6N9pQGI3]=mk3SLVN4HKm; H_PS_PSSID=; PSINO=7; Hm_lvt_0785cae3f3d84faf3af8cad08727feb6=1559803237,1559803355,1559803422,1559822550; USERTOKEN=” + USERTOKEN + “; expirseData={#引号expire#引号:1577750400,#引号to_end_day#引号:207,#引号space_c”, , , , , , , , , , , , , , , )

function randIp()
{
    return mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255);
}

// header 请求头
$header = [
    'Host: study.baidu.com',
    'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
    'Accept: application/json,application/x-www-form-urlencoded, */*; q=0.01',
    'Referer: ' . $url,
    'Cookie: ' . $cookie,
    'CLIENT-IP: ' . randIp(),
    'X-FORWARDED-FOR: ' . randIp(),
];
// 请求数据
$data = [
    'doc_id' => $id,
    't' => $time,
    'fastdown' => 'undefined',
    'fr' => 4
];
$result = httpRequest($url, 'get', $data, $header, false);
if (!$result) {
    toJson("系统繁忙,请稍后再试", 400);
}
try {
    $result = json_decode($result, true);
} catch (Exception $e) {
    toJson("系统繁忙,请稍后再试", 400);
}
if ($result['error'] == 0 && $result['errmsg'] == 'success') {
    $down_url = baiDuDwz($result['data']['download_url']);
    toJson("解析成功", 200, $down_url);
} else {
    toJson("系统繁忙,请稍后再试", 400);
}


安装教程
  • 为防止伸手党,所有文件仅给出源码,不做文档,如需知道传递的参数,请查阅相关文件源码
  • 代码中难免有出错的地方,或者哪里有不多的,请多多指教,不要妄下评论
  • 所有解析均是源站解析,不借用第三方平台
  • 如若解析失效,请与我联系,或者你自己解决,文件在上传之前都是做过测试的!

文件用的是百度短网址,百度短网址已经收费,可能会出错,可以自己修改


本文转载码云的开源帖子


没有搭建教材,懂得可以搭建一个或者回复一个搭建教程
没有搭建教材,懂得可以搭建一个或者回复一个搭建教程
没有搭建教材,懂得可以搭建一个或者回复一个搭建教程


下载地址在这里!!!
wenku.zip (3.73 KB, 下载次数: 233)

免费评分

参与人数 4吾爱币 +4 热心值 +3 收起 理由
辛五味la + 1 + 1 热心回复!
萌新酱 + 1 我很赞同!
丨肆丨 + 1 + 1 谢谢@Thanks!
温柔的一哥 + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

夏无道 发表于 2019-10-6 18:55
Snipaste_2019-10-06_18-53-18.png

所以恕我直言,没有这个Cookies,没有这个usertoken,根本没卵用。

当然,这个源码倒是真的,但是也没卵用。真要懂的人,也能自己写出类似的源码来。
xiaofeivip 发表于 2019-10-6 17:17
不行啊楼主,提示         {"error":1701,"errmsg":"机构信息错误:user has no org","data":[]}
For丶灵 发表于 2019-10-6 16:34
byh3025 发表于 2019-10-6 16:48
等着大神编译成成品吧
王美君 发表于 2019-10-6 16:58
的确是难,有没有大神编译
阿杰曾爱 发表于 2019-10-6 16:58
感谢分享!虽然不太懂这个。辛苦了~
小雨呀 发表于 2019-10-6 17:07
机构信息错误   ??
pcb05 发表于 2019-10-6 17:18
不太懂这个。辛苦了
wizll7865 发表于 2019-10-6 18:26
楼主大大可以下载VIP的文档的吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表