自动领取起点网页版的经验值

说明

服务器到期,停止服务

2020.08.12更新
贴上关键代码段(php)
关键是请求起点接口,这是核心,其它没什么

public function handle()
    {
        $res = self::CallAPI('get',
            'https://book.qidian.com/ajax/book/VoteRecomTicket',
            ['referObject'=>$this->data->level],
            'Cookie:'.$this->data->cookie
        );
        $resobj = json_decode($res);
        if(isset($resobj->code)){
            switch ($resobj->code) {
                case 11608:  //不符合领取在线经验值的条件
                    break;
                case 0:   //成功
                    if($this->data->level < 8){
                        DB::table('qidian_ex')->where('id',$this->data->id)->update([
                            'level'=>$this->data->level+1,
                            'max_level' => $this->data->level,
                            'is_send'=>0,
                            'expired'=>0
                        ]);
                        DB::table('qidian_log')->insert([
                            'user_id' => $this->data->id,
                            'log' => 'get level '.$this->data->level,
                            'created_at' => date('Y-m-d H:i:s')
                        ]);
                    }else{
                        DB::table('qidian_ex')->where('id',$this->data->id)->update([
                            'level'=>1,
                            'max_level'=>$this->data->level,
                            'is_send'=>0,
                            'expired'=>0
                        ]);
                        DB::table('qidian_log')->insert([
                            'user_id' => $this->data->id,
                            'log' => 'get level '.$this->data->level,
                            'created_at' => date('Y-m-d H:i:s')
                        ]);
                    }
                    break;
                default:
                    break;
            }
        }else{
            //没登录上去,发邮件
            if($this->data->is_send == 0){ //第一次发送
            //if(true){ //第一次发送
                DB::table('qidian_ex')
                    ->where('id',$this->data->id)
                    ->wherenull('deleted_at')
                    ->update(['expired'=>1,'is_send'=>1]);
                DB::table('qidian_log')->insert([
                        'user_id' => $this->data->id,
                        'log' => '[Failed] get level '.$this->data->level,
                        'created_at' => date('Y-m-d H:i:s')
                    ]);
                $smaildata = (object)null;
                $smaildata->content = 'Dear: [ '. $this->data->nickname .' ] , 您的起点cookie过期,点击下面Url跳转修改';
                $smaildata->a = 'https://qidian.changetakestime.cn?mail='.$this->data->mail;
                $smaildata->email = $this->data->mail;
                $smaildata->subject= '无法验证用户,cookie过期';
                SendReminderEmail::dispatch($smaildata);//队列发送邮件
            }
        }  
    }

    public static function CallAPI($method, $url, $data = false,$headers=''){
        $array = [
            'Content-Type: application/json',
            'Host: my.qidian.com',
            $headers
        ];  
        $curl = curl_init();

        switch (strtoupper($method))
        {
            case "POST":
                curl_setopt($curl, CURLOPT_POST, 1);

                if ($data)
                    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
                break;
            case "PUT":
                curl_setopt($curl, CURLOPT_PUT, 1);
                break;
            default:
                if ($data)
                    $url = sprintf("%s?%s", $url, http_build_query($data));
        }

        // Optional Authentication:
        curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_HTTPHEADER,$array);

        $result = curl_exec($curl);
        curl_close($curl);
        return $result;
    }

最近看小说想支持一下正版,注册了起点的账号。发现经验有点重要,关系到了评论功能每天推荐票的张数。在网页的个人中心处发现了可以在线领取经验值,每天100点,决定写个程序每天自动领取。通过半个月的试用 测试,决定将成果与大家分享,先抛出自动领取网址
本网站程序的功能是:通过用户填写的cookie来为用户领取起点网址的经验值,每天100点。只有这一个功能,不会做其它操作。实测每天凌晨04:30前能全部领取完毕。如果当天已经手动领取过,则程序无法执行,请勿手动领取。
起点个人中心

如何使用

登录起点网页版,登录之后进入 个人中心

windows用户,按 F12 打开控制台
mac 用户,按 command+option+i 打开控制台

下面用一张图片说明,如何获取cookie
注:如果找不到cookie,可把起点页面关闭,然后打重新打开。这时会有cookie信息
获取cookie描述
获取完cookie后,打开领取网站,根据网页上的显示,添加即可,如下图
在这里插入图片描述
程序每五分钟会执行一次,自动领取经验。如果cookie失效,会发送邮件提醒用户。过期后只会提醒一次。所以邮件地址比较重要。请填写有效的邮件地址。
网站比较简单,之后会根据需求继续添加功能。

Q&A

Q: 是否安全
A: 起点的cookie是有过期时间的,经过半个月的测试,大概过期时间为48小时左右。而一些敏感的操作,只能过cookie是无法操作成功的。而且如果在起点的网站上退出登录的用户,则cookie立即失效。况且此网页程序只做领取经验操作。之后会将程序开源至github,所以无需担心安全问题

Q:填写了,但没有自动领取
A: 如果您已经手动领取了一个经验,则程序会停留在那个经验点。无法进行下一个的领取,所以请勿手动领取。如果已经领取了,则只能等到第二天重置。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值