陈德本 7 vuotta sitten
sitoutus
e329540673
9 muutettua tiedostoa jossa 737 lisäystä ja 0 poistoa
  1. 22 0
      Request.php
  2. 9 0
      composer.json
  3. 112 0
      explore.php
  4. 194 0
      hintData.php
  5. 241 0
      index.php
  6. 80 0
      rank.php
  7. 31 0
      server.php
  8. 30 0
      test.php
  9. 18 0
      trait_test.php

+ 22 - 0
Request.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: chendeben
+ * Date: 2019-01-22
+ * Time: 13:38
+ */
+
+namespace Heanup;
+
+
+class Request extends \Thread
+{
+    public $url;
+    public $response;
+    public function __construct($url) {
+        $this->url = $url;
+    }
+    public function run() {
+        $this->response = file_get_contents($this->url);
+    }
+}

+ 9 - 0
composer.json

@@ -0,0 +1,9 @@
+{
+    "require": {
+        "bshaffer/oauth2-server-php": "^1.10",
+        "league/oauth2-server": "^7.3",
+        "jaeger/querylist": "^4.1",
+        "phpoffice/phpspreadsheet": "^1.6",
+        "jaeger/querylist-rule-baidu": "^4.0"
+    }
+}

+ 112 - 0
explore.php

@@ -0,0 +1,112 @@
+<?php
+set_time_limit(0);
+/**
+ * Created by PhpStorm.
+ * User: chendeben
+ * Date: 2019-01-16
+ * Time: 17:06
+ */
+require_once('vendor/autoload.php');
+
+use PhpOffice\PhpSpreadsheet\Spreadsheet;
+use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
+use QL\QueryList;
+
+//$ql = QueryList::get('https://www.baidu.com/s?wd=QueryList');
+//$titles = $ql->find('h3>a')->texts(); //获取搜索结果标题列表
+//$links = $ql->find('h3>a')->attrs('href'); //获取搜索结果链接列表
+//print_r($titles);
+//print_r($links);
+//die();
+
+
+$wd = $_REQUEST['wd'];
+if (!$wd) {
+    ?>
+    <!DOCTYPE html>
+    <html lang="zh-cn">
+    <head>
+        <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <!-- ZUI 标准版压缩后的 CSS 文件 -->
+        <link rel="stylesheet" href="//cdn.bootcss.com/zui/1.8.1/css/zui.min.css">
+
+        <!-- ZUI Javascript 依赖 jQuery -->
+        <script src="//cdn.bootcss.com/zui/1.8.1/lib/jquery/jquery.js"></script>
+        <!-- ZUI 标准版压缩后的 JavaScript 文件 -->
+        <script src="//cdn.bootcss.com/zui/1.8.1/js/zui.min.js"></script>
+    </head>
+    <body>
+    <br>
+    <br>
+    <br>
+    <br>
+    <form method="post" action="">
+        <div class="container">
+            <div class="row">
+                <div class="col-md-9">
+                <textarea style="height: 300px;" class="form-control" rows="3" placeholder="请输入关键词,一行一个" name="wd"></textarea>
+                </div>
+            </div>
+            <div class="row" style="margin-top: 5px;">
+                <div class="col-md-2 col-md-offset-8">
+                    <input type="submit"  class="btn btn-primary  btn-lg" value="提交"/>
+                </div>
+            </div>
+        </div>
+
+    </form>
+
+    </body>
+    </html>
+    <?php
+} else {
+    $_url = "http://www.baidu.com/s?ie=UTF-8&wd=%s";
+    $origin_str = [';', ';', ',', ',', ' ',"\r\n"];
+    $des_str = [',', ',', ',', ',', ',',','];
+    $wd = str_replace($origin_str, $des_str, $wd);
+    $keys = explode(",", $wd);
+    $result = [];
+    foreach ($keys as $key) {
+        $url = sprintf($_url, $key);
+        $ql = QueryList::get($url);
+        $table = $ql->find("#rs > table");
+        $tableRows = $table->find('tr')->map(function ($row) {
+            return $row->find('th')->texts()->all();
+        });
+        $data = $tableRows->all();
+        $_result = [];
+        foreach ($data as $item) {
+            foreach ($item as $value) {
+                $_result[] = $value;
+            }
+        }
+        $result[] = [
+            'keyword' => $key,
+            'related_keywords' => $_result
+        ];
+    }
+    $spreadsheet = new Spreadsheet();
+    $sheet = $spreadsheet->getActiveSheet();
+    $row = 1;
+    foreach ($result as $key => $item) {
+        $sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
+        foreach ($item['related_keywords'] as $related_keyword) {
+            $sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
+        }
+        $row++;
+    }
+    $writer = new Xlsx($spreadsheet);
+    header("Pragma: public");
+    header("Expires: 0");
+    header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
+    header("Content-Type:application/force-download");
+    header("Content-Type:application/vnd.ms-execl");
+    header("Content-Type:application/octet-stream");
+    header("Content-Type:application/download");
+    header('Content-Disposition:attachment;filename="相关搜索词.xlsx"');
+    header("Content-Transfer-Encoding:binary");
+    $writer->save('php://output');
+    $spreadsheet->disconnectWorksheets();
+}

+ 194 - 0
hintData.php

@@ -0,0 +1,194 @@
+<?php
+set_time_limit(0);
+/**
+ * Created by PhpStorm.
+ * User: chendeben
+ * Date: 2019-01-16
+ * Time: 17:06
+ */
+require_once('vendor/autoload.php');
+
+use PhpOffice\PhpSpreadsheet\Spreadsheet;
+use PhpOffice\PhpSpreadsheet\Style\Alignment;
+use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
+use QL\QueryList;
+
+//$ql = QueryList::get('https://www.baidu.com/s?wd=QueryList');
+//$titles = $ql->find('h3>a')->texts(); //获取搜索结果标题列表
+//$links = $ql->find('h3>a')->attrs('href'); //获取搜索结果链接列表
+//print_r($titles);
+//print_r($links);
+//die();
+$times = 3;
+
+$wd = $_REQUEST['wd'];
+if (!$wd) {
+    ?>
+    <!DOCTYPE html>
+    <html lang="zh-cn">
+    <head>
+        <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <!-- ZUI 标准版压缩后的 CSS 文件 -->
+        <link rel="stylesheet" href="//cdn.bootcss.com/zui/1.8.1/css/zui.min.css">
+
+        <!-- ZUI Javascript 依赖 jQuery -->
+        <script src="//cdn.bootcss.com/zui/1.8.1/lib/jquery/jquery.js"></script>
+        <!-- ZUI 标准版压缩后的 JavaScript 文件 -->
+        <script src="//cdn.bootcss.com/zui/1.8.1/js/zui.min.js"></script>
+    </head>
+    <body>
+    <br>
+    <br>
+    <br>
+    <br>
+    <form method="post" action="">
+        <div class="container">
+            <div class="row">
+                <div class="col-md-9">
+                    <textarea style="height: 300px;" class="form-control" rows="3" placeholder="请输入关键词,一行一个"
+                              name="wd"></textarea>
+                </div>
+            </div>
+            <br>
+            <br>
+            <div class="row">
+                <div class="col-md-1">
+                    <span>爬取深度</span>
+                </div>
+                <div class="col-md-1 col-md-offset-2">
+                    <select  class="form-control"
+                              name="deep">
+                        <option value="1">1</option>
+                        <option value="2">2</option>
+                        <option value="3">3</option>
+                    </select>
+                </div>
+            </div>
+            <div class="row" style="margin-top: 5px;">
+                <div class="col-md-2 col-md-offset-8">
+                    <input type="submit" class="btn btn-primary  btn-lg" value="提交"/>
+                </div>
+            </div>
+        </div>
+
+    </form>
+
+    </body>
+    </html>
+    <?php
+} else {
+    error_reporting(0);
+    $origin_str = [';', ';', ',', ',', ' ', "\r\n"];
+    $des_str = [',', ',', ',', ',', ',', ','];
+    $wd = str_replace($origin_str, $des_str, $wd);
+    $keys = explode(",", $wd);
+    $deep=$_REQUEST['deep']?:1;
+    $result = $response = [];
+    baidu($keys);
+//    print_r($result);
+//    die();
+
+    $spreadsheet = new Spreadsheet();
+    $sheet = $spreadsheet->getActiveSheet();
+    $sheet->setTitle("为你推荐-相关搜索词");
+    $row = 1;
+    $sheet->setCellValue("A" . $row, "序号");
+    $sheet->setCellValue("B" . $row, "关键词");
+    $sheet->setCellValue("C" . $row, "相关搜索词");
+    $row++;
+    foreach ($result as $key => $item) {
+        $sheet->setCellValue("A" . $row, $row - 1);
+        $sheet->setCellValue("B" . $row, $item['key']);
+        $sheet->setCellValue("C" . $row, $item['relatedWd']);
+        $row++;
+    }
+    $styleArray = [
+        'alignment' => [
+            'horizontal' => Alignment::HORIZONTAL_CENTER,
+            'vertical' => Alignment::VERTICAL_CENTER,
+        ],
+    ];
+    $sheet->getColumnDimension("A")->setWidth(14);
+    $sheet->getColumnDimension("B")->setWidth(25);
+    $sheet->getColumnDimension("C")->setWidth(25);
+    $sheet->getStyle("A1:C" . $row)->applyFromArray($styleArray);
+
+    $writer = new Xlsx($spreadsheet);
+    header("Pragma: public");
+    header("Expires: 0");
+    header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
+    header("Content-Type:application/force-download");
+    header("Content-Type:application/vnd.ms-execl");
+    header("Content-Type:application/octet-stream");
+    header("Content-Type:application/download");
+    header('Content-Disposition:attachment;filename="为你推荐-相关搜索词.xlsx"');
+    header("Content-Transfer-Encoding:binary");
+    $writer->save('php://output');
+    $spreadsheet->disconnectWorksheets();
+//    echo "完成,总耗时".$second."秒";
+
+}
+function baidu($wds)
+{
+    global $deep;
+    for ($i = 0; $i < $deep; $i++) {
+        if (!isset($_wds)) {
+            $_wds = $wds;
+        }
+        $wds2 = [];
+        foreach ($_wds as $wd) {
+            $wds2 = array_merge($wds2, getRelatedKeywords($wd));
+        }
+        $_wds = $wds2;
+    }
+}
+
+function getRelatedKeywords($wd)
+{
+    global $response, $result;
+    $searchUrl = "http://www.baidu.com/s?ie=UTF-8&wd=%s";
+
+    $url = sprintf($searchUrl, $wd);
+    $rules = [
+        'json' => ['.c-tools', 'data-tools'],
+    ];
+    $ql = (new QL\QueryList)->get($url);
+    $rt = $ql->rules($rules)->query()->getData();
+    $rt = json_decode(json_encode($rt), true);
+    $wds = [];
+    foreach ($rt as $item) {
+        $json = json_decode($item['json'], true);
+        $baiduUrl = substr($json['url'], 30);
+        if ($baiduUrl) {
+            $_url = "https://sp2.baidu.com/8LUYsjW91Qh3otqbppnN2DJv/link?url=%s&query=%s&cb=jQuery110206243498231922682_1558178381142&data_name=recommend_common_merger_online&format=json&t=%s";
+            $_url = sprintf($_url, $baiduUrl, $wd, time() . "000");
+            $data = @file_get_contents($_url);
+            $pat = "#1558178381142\((.*)\)#";
+            preg_match($pat, $data, $arr);
+            $data = json_decode($arr[1], true);
+            if ($data['data'][0]['hintData']) {
+                foreach ($data['data'][0]['hintData'] as $hintDatum) {
+                    if ($response[md5($item['wd'])]) {
+                        continue;
+                    }
+                    foreach ($hintDatum['linkInfo'] as $item) {
+                        $response[md5($item['wd'])] = $item['wd'];
+                        $result[] = ['key' => $wd, 'relatedWd' => $item['wd']];
+                        $wds[] = $item['wd'];
+                    }
+                    foreach ($hintDatum['linkInfo2'] as $item) {
+                        $response[md5($item['wd'])] = $item['wd'];
+                        $result[] = ['key' => $wd, 'relatedWd' => $item['wd']];
+                        $wds[] = $item['wd'];
+                    }
+                }
+            }
+//            print_r($data);die();
+        }
+    }
+    return $wds;
+}
+
+

+ 241 - 0
index.php

@@ -0,0 +1,241 @@
+<?php
+set_time_limit(0);
+/**
+ * Created by PhpStorm.
+ * User: chendeben
+ * Date: 2019-01-16
+ * Time: 17:06
+ */
+require_once('vendor/autoload.php');
+
+use PhpOffice\PhpSpreadsheet\Spreadsheet;
+use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
+use QL\QueryList;
+
+//$ql = QueryList::get('https://www.baidu.com/s?wd=QueryList');
+//$titles = $ql->find('h3>a')->texts(); //获取搜索结果标题列表
+//$links = $ql->find('h3>a')->attrs('href'); //获取搜索结果链接列表
+//print_r($titles);
+//print_r($links);
+//die();
+
+
+$wd = $_REQUEST['wd'];
+if (!$wd) {
+    ?>
+    <!DOCTYPE html>
+    <html lang="zh-cn">
+    <head>
+        <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <!-- ZUI 标准版压缩后的 CSS 文件 -->
+        <link rel="stylesheet" href="//cdn.bootcss.com/zui/1.8.1/css/zui.min.css">
+
+        <!-- ZUI Javascript 依赖 jQuery -->
+        <script src="//cdn.bootcss.com/zui/1.8.1/lib/jquery/jquery.js"></script>
+        <!-- ZUI 标准版压缩后的 JavaScript 文件 -->
+        <script src="//cdn.bootcss.com/zui/1.8.1/js/zui.min.js"></script>
+    </head>
+    <body>
+    <br>
+    <br>
+    <br>
+    <br>
+    <form method="post" action="">
+        <div class="container">
+            <div class="row">
+                <div class="col-md-9">
+                    <textarea style="height: 300px;" class="form-control" rows="3" placeholder="请输入关键词,一行一个" name="wd"></textarea>
+                </div>
+            </div>
+            <div class="row" style="margin-top: 5px;">
+                <div class="col-md-2 col-md-offset-8">
+                    <input type="submit"  class="btn btn-primary  btn-lg" value="提交"/>
+                </div>
+            </div>
+        </div>
+
+    </form>
+
+    </body>
+    </html>
+    <?php
+} else {
+
+    $origin_str = [';', ';', ',', ',', ' ',"\r\n"];
+    $des_str = [',', ',', ',', ',', ',',','];
+    $wd = str_replace($origin_str, $des_str, $wd);
+    $keys = explode(",", $wd);
+    $baidu = baidu($keys);
+    $shenma=shenma($keys);
+    $sougou=sougou($keys);
+    $so_360=so_360($keys);
+
+    $spreadsheet = new Spreadsheet();
+    $sheet = $spreadsheet->getActiveSheet();
+    $sheet->setTitle("百度");
+    $row = 1;
+    foreach ($baidu as $key => $item) {
+        $sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
+        foreach ($item['related_keywords'] as $related_keyword) {
+            $sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
+        }
+        $row++;
+    }
+
+    $shenma_sheet=new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet();
+    $row = 1;
+    foreach ($shenma as $key => $item) {
+        $shenma_sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
+        foreach ($item['related_keywords'] as $related_keyword) {
+            $shenma_sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
+        }
+        $row++;
+    }
+    $shenma_sheet->setTitle("神马");
+    $spreadsheet->addSheet($shenma_sheet);
+
+    $sougou_sheet=new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet();
+    $row = 1;
+    foreach ($sougou as $key => $item) {
+        $sougou_sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
+        foreach ($item['related_keywords'] as $related_keyword) {
+            $sougou_sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
+        }
+        $row++;
+    }
+    $sougou_sheet->setTitle("搜狗");
+    $spreadsheet->addSheet($sougou_sheet);
+
+    $so_360_sheet=new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet();
+    $row = 1;
+    foreach ($so_360 as $key => $item) {
+        $so_360_sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
+        foreach ($item['related_keywords'] as $related_keyword) {
+            $so_360_sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
+        }
+        $row++;
+    }
+    $so_360_sheet->setTitle("360");
+    $spreadsheet->addSheet($so_360_sheet);
+
+    $writer = new Xlsx($spreadsheet);
+    header("Pragma: public");
+    header("Expires: 0");
+    header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
+    header("Content-Type:application/force-download");
+    header("Content-Type:application/vnd.ms-execl");
+    header("Content-Type:application/octet-stream");
+    header("Content-Type:application/download");
+    header('Content-Disposition:attachment;filename="相关搜索词.xlsx"');
+    header("Content-Transfer-Encoding:binary");
+    $writer->save('php://output');
+    $spreadsheet->disconnectWorksheets();
+}
+
+
+function baidu($wd){
+    $_url = "http://www.baidu.com/s?ie=UTF-8&wd=%s";
+    $result=[];
+    foreach ($wd as $key) {
+        $url = sprintf($_url, $key);
+        $ql = (new QL\QueryList)->get($url);
+        $table = $ql->find("#rs > table");
+        $tableRows = $table->find('tr')->map(function ($row) {
+            return $row->find('th')->texts()->all();
+        });
+        $data = $tableRows->all();
+        $_result = [];
+        foreach ($data as $item) {
+            foreach ($item as $value) {
+                $_result[] = $value;
+            }
+        }
+        $result[] = [
+            'keyword' => $key,
+            'related_keywords' => $_result
+        ];
+    }
+    return $result;
+}
+
+function shenma($keys){
+    $url="https://yz.m.sm.cn/s?q=%s&by=submit&uc_param_str=dnntnwvepffrgibijbprsvdsdichei&from=ws984141";
+    $result=[];
+    foreach ($keys as $key) {
+        $url = sprintf($url, $key);
+        $ql = QueryList::get($url);
+        $table = $ql->find(".ali_rel > ul > li");
+        $tableRows = $table->map(function ($row) {
+            return $row->find('a')->texts()->all();
+        });
+        $data = $tableRows->all();
+//        var_dump($data);
+//        die();
+        $_result = [];
+        foreach ($data as $item) {
+            foreach ($item as $value) {
+                $_result[] = $value;
+            }
+        }
+        $result[] = [
+            'keyword' => $key,
+            'related_keywords' => $_result
+        ];
+    }
+    return $result;
+}
+
+function sougou($keys){
+    $url="https://www.sogou.com/web?query=%s";
+    $result=[];
+    foreach ($keys as $key) {
+        $url = sprintf($url, $key);
+        $ql = QueryList::get($url);
+        $table = $ql->find("#hint_container");
+        $tableRows = $table->find('tr')->map(function ($row) {
+            return $row->find('a')->texts()->all();
+        });
+        $data = $tableRows->all();
+//        var_dump($data);
+//        die();
+        $_result = [];
+        foreach ($data as $item) {
+            foreach ($item as $value) {
+                $_result[] = $value;
+            }
+        }
+        $result[] = [
+            'keyword' => $key,
+            'related_keywords' => $_result
+        ];
+    }
+    return $result;
+}
+function so_360($keys){
+    $url="https://www.so.com/s?ie=utf-8&fr=none&src=360sou_newhome&q=%s";
+    $result=[];
+    foreach ($keys as $key) {
+        $url = sprintf($url, $key);
+        $ql = QueryList::get($url);
+        $table = $ql->find("#rs > table");
+        $tableRows = $table->find('tr')->map(function ($row) {
+            return $row->find('a')->texts()->all();
+        });
+        $data = $tableRows->all();
+//        var_dump($data);
+//        die();
+        $_result = [];
+        foreach ($data as $item) {
+            foreach ($item as $value) {
+                $_result[] = $value;
+            }
+        }
+        $result[] = [
+            'keyword' => $key,
+            'related_keywords' => $_result
+        ];
+    }
+    return $result;
+}

+ 80 - 0
rank.php

@@ -0,0 +1,80 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: chendeben
+ * Date: 2019-01-21
+ * Time: 09:34
+ */
+
+//use QL\QueryList;
+
+include 'vendor/autoload.php';
+$key_word = $_GET['wd'];
+$domain=$_GET['host']?:"www.cnanzhi.com";
+$_url = "http://www.baidu.com/s?rn=10&ie=UTF-8&wd=%s";
+
+
+$range = '.c-container';
+$rules = [
+    'result' => ['h3', 'text'],
+    // 采集链接
+    'link' => ['h3>a', 'href'],
+];
+
+
+$domains = [
+    ''
+];
+$flag=false;
+
+for ($i=0;$i<6;$i++){
+    $url = sprintf($_url,$key_word);
+    if ($i>0){
+        $url.="&pn=".($i*10);
+    }
+    $ql = (new QL\QueryList)->get($url);
+    $data = $ql->rules($rules)->range($range)->query()->getData();
+    $data = $data->all();
+//    $data=array_map(function ($a){return get_headers($a['link']);}, $data);
+//var_dump($data);
+//die();
+    foreach ($data as $key=>$item) {
+        $header=getRealUrl($item['link']);
+//        var_dump(parse_url($header)['host']);
+//        die();
+        if (parse_url($header)['host']==$domain){
+            $rank=$key+$i*10;
+            $real_url=$header;
+            break;
+        }
+    }
+    if (isset($rank)){
+        break;
+    }
+}
+if (isset($rank)){
+    echo sprintf( "排名第%s位,真实URL为<br>%s",$rank+1,$real_url);
+}else{
+    echo "不在前5页里";
+}
+
+
+function getRealUrl($url)
+{
+    //得到百度跳转的真正地址
+    $header = @get_headers($url, 1);
+//    var_dump($header);die();
+    if (strpos($header[0], '301') || strpos($header[0], '302')) {
+        if (is_array($header['Location'])) {
+            //return $header['Location'][count($header['Location'])-1];
+            $_url = $header['Location'][0];
+        } else {
+            $_url = $header['Location'];
+        }
+    } else {
+        $_url = $url;
+    }
+    return $_url;
+//    $url = parse_url($_url);
+//    return $url['host'];
+}

+ 31 - 0
server.php

@@ -0,0 +1,31 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: chendeben
+ * Date: 2019-01-11
+ * Time: 17:15
+ */
+$dsn= 'mysql:dbname=oauth_test;host=192.168.41.215:3307';
+$username = 'root';
+$password = 'root';
+
+// 错误报告(这毕竟是一个演示!)
+ini_set('display_errors',1);error_reporting(E_ALL);
+
+// 自动加载
+require_once('vendor/autoload.php');
+$storage = new OAuth2\Storage\Pdo(array('dsn' => $dsn, 'username' => $username, 'password' => $password));
+
+// 通过存储对象或对象数组存储的oauth2服务器类
+$server = new OAuth2\Server($storage);
+
+// 授权码 有效期只有30秒
+$server->addGrantType(new OAuth2\GrantType\AuthorizationCode($storage));
+
+// 客户端证书
+$server->addGrantType(new OAuth2\GrantType\ClientCredentials($storage));
+
+// 用户凭据
+$server->addGrantType(new OAuth2\GrantType\UserCredentials($storage));
+// 刷新令牌  启用这个会报错,原因未知
+ $server->addGrantType(new OAuth2\GrantType\RefreshToken($refreshStorage));

+ 30 - 0
test.php

@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * Created by PhpStorm.
+ * User: chendeben
+ * Date: 2019-01-11
+ * Time: 17:41
+ */
+
+
+
+echo getRealUrl($_GET['url']);
+
+function getRealUrl($url)
+{
+    //得到百度跳转的真正地址
+    $header = get_headers($url, 1);
+    if (strpos($header[0], '301') || strpos($header[0], '302')) {
+        if (is_array($header['Location'])) {
+            //return $header['Location'][count($header['Location'])-1];
+            $_url = $header['Location'][0];
+        } else {
+            $_url = $header['Location'];
+        }
+    } else {
+        $_url = $url;
+    }
+    $url = parse_url($_url);
+    return $url['host'];
+}

+ 18 - 0
trait_test.php

@@ -0,0 +1,18 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: chendeben
+ * Date: 2019-01-12
+ * Time: 11:14
+ */
+trait trait_test{
+    function test_1($a,$b){
+        return round($a/$b);
+    }
+
+}
+trait trait_test2{
+    function test_2($a,$b){
+        return round($a*$b);
+    }
+}