资讯专栏INFORMATION COLUMN

利用Guzzle刷豆瓣热评引发的联想

xcc3641 / 1290人阅读

摘要:是一个的客户端,用来轻而易举地发送请求,并集成到我们的服务上。接口简单构建查询语句请求分流上传下载大文件使用上传数据等等。发送同步或异步的请求均使用相同的接口。使用接口来请求响应分流,允许你使用其他兼容的类库与共同开发。

Guzzle

Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。

接口简单:构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等 。

发送同步或异步的请求均使用相同的接口。

使用PSR-7接口来请求、响应、分流,允许你使用其他兼容的PSR-7类库与Guzzle共同开发。

抽象了底层的HTTP传输,允许你改变环境以及其他的代码,如:对cURL与PHP的流或socket并非重度依赖,非阻塞事件循环。

中间件系统允许你创建构成客户端行为。

所需包
    "require": {
        "guzzlehttp/guzzle": "6.2.*"
    }
源码

     * @CreateTime  2017-04-12T10:39:28+0800
     * @param                               [type] $account  [description]
     * @param                               [type] $password [description]
     * @return                              [type]           [description]
     */
    public function __construct( $account, $password ){
        $this->jar = new CookieJar;
        try{
            if( $this->login( $account, $password ) == "200"){
                echo "----------【 START 】----------
";
                    $this->send();
                echo "----------【  END  】----------
";
            }else{
              echo "登录失败~!";
            }
        }catch (RequestException $e) {
            var_dump( $e->getRequest());
            if ($e->hasResponse()) {
                var_dump( $e->getResponse());
            }
        }
    }
    /**
     * [login 登录]
     * @author     Shaowei Pu <542684913>
     * @CreateTime  2017-04-12T10:42:16+0800
     * @return                              [type] [description]
     */
    public function login( $account , $password ){
      // 清楚空间内cookie
      // $this->jar->clear();
      return ( new Client([ "cookies"  =>  true ]) )->request(
            "POST", 
            "https://accounts.douban.com/j/popup/login/basic",
            [
              "version" => 1.1 ,
              "cookies"         => $this->jar,
              "headers"         => [
                                  "Accept"       => "application/json",
                                  "Referer"      => "登录来源页"
              ],
              "form_params"     => [
                                "source"           => "group",
                                "referer"          => "提交接口",
                                "name"             => $account,
                                "password"         => $password,
                                "captcha_id"       => "",
                                "captcha_solution" => ""
                ]
          ])->getStatusCode();
    }
    /**
     * [send 发送内容]
     * @author     Shaowei Pu <542684913@qq.com>
     * @CreateTime  2017-04-12T10:43:17+0800
     * @return                              [type] [description]
     */
    public function send() {
        // 获得 ck
        $this->reload();        
        $ck    = "ntxB";
        array_map(function( $val ) use  (& $ck ){  $val["Name"] == "ck" && $ck = $val["Value"]; }, $this->jar->toArray());
        // 计时器
        while ( $this->clock > 0 ) {
          $send_content =  ( new Client([ "cookies"  =>  true ]) )->request(
            "POST", 
            "提交接口",
            [
              "version"         => 1.1,
              "cookies"         => $this->jar,
              "headers"         => [
                                  "Accept"       => "application/json",
                                  "Referer"      => "来源页"
              ],
              "form_params"     => [
                                "ck"                => $ck,
                                "rv_comment"        => "自己顶一下~!",
                                "start"             => 0,
                                "submit_btn"        =>"加上去"
                                ]
              ])->getBody()->getContents();
              echo date("Y-m-d H:i:s")." ".$this->clock."
";
              sleep( self::SLEEP );
              --$this->clock;
        }
    }
    /**
     * [reload 刷新页面]
     * @author     Shaowei Pu <542684913@qq.com>
     * @CreateTime  2017-04-12T13:35:58+0800
     * @return                              [type] [description]
     */
    public function reload(){
      (new Client([ "cookies"  =>  true ])) ->request("GET", "访问页",[
          "cookies"         => $this->jar,
          "headers"         => [
                "Accept"       => "application/json",
                "Referer"      => "来源页"
       ]]);
    }
}

new DouBanBrush("账号","密码");
还没做的事

验证码识别

优化效率

致敬

像 @娃娃脾气 大佬致敬

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22689.html

相关文章

  • 利用Guzzle豆瓣热评引发联想

    摘要:是一个的客户端,用来轻而易举地发送请求,并集成到我们的服务上。接口简单构建查询语句请求分流上传下载大文件使用上传数据等等。发送同步或异步的请求均使用相同的接口。使用接口来请求响应分流,允许你使用其他兼容的类库与共同开发。 Guzzle Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。 接口简单:构建查询语句、POST请求、分流上传下载大文...

    binaryTree 评论0 收藏0
  • 利用Guzzle豆瓣热评引发联想

    摘要:是一个的客户端,用来轻而易举地发送请求,并集成到我们的服务上。接口简单构建查询语句请求分流上传下载大文件使用上传数据等等。发送同步或异步的请求均使用相同的接口。使用接口来请求响应分流,允许你使用其他兼容的类库与共同开发。 Guzzle Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。 接口简单:构建查询语句、POST请求、分流上传下载大文...

    fou7 评论0 收藏0
  • 利用Guzzle豆瓣热评引发联想

    摘要:是一个的客户端,用来轻而易举地发送请求,并集成到我们的服务上。接口简单构建查询语句请求分流上传下载大文件使用上传数据等等。发送同步或异步的请求均使用相同的接口。使用接口来请求响应分流,允许你使用其他兼容的类库与共同开发。 Guzzle Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。 接口简单:构建查询语句、POST请求、分流上传下载大文...

    ad6623 评论0 收藏0
  • 爬虫 - 收藏集 - 掘金

    摘要:使用的爬虫知乎用户数据爬取和分析阅读掘金背景说明小拽利用的写的爬虫,实验性的爬取了知乎用户的基本信息同时,针对爬取的数据,进行了简单的分析呈现。 Python 知乎爬虫(最新) - 后端 - 掘金 环境:python3.x外部依赖包:requestsgithub项目地址 主要的问题:模拟登陆: 知乎现在改用https请求了,数据加密,但是问题不大,重要的是网页数据改动了,而且在请求时后...

    zzbo 评论0 收藏0
  • 联想黄昏降临 复兴机会还有多大?

    摘要:企业级业务联想的机会还有多大年初,当时的全球市场老大惠普公司在中国台湾打出了一则广告联想,连想都不要想,这一广告语随后引发轩然大波,并以惠普公司发出正式致歉信而告终。几天前,一篇题为《假如帝国的黄昏降临》的文章刷了屏,文中引述了桥水基金创始人Ray Dalio在新书《债务危机》中的一句话让人印象深刻:很多人认为过去发生在不同年代,不同国家的经济危机都是由不同的原因造成的,而我只看到了同样一些...

    joy968 评论0 收藏0

发表评论

0条评论

xcc3641

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<