说明
服务器到期,停止服务
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
失效,会发送邮件提醒用户。过期后只会提醒一次。所以邮件地址比较重要。请填写有效的邮件地址。
网站比较简单,之后会根据需求继续添加功能。
Q&A
Q: 是否安全
A: 起点的cookie
是有过期时间的,经过半个月的测试,大概过期时间为48小时左右。而一些敏感的操作,只能过cookie
是无法操作成功的。而且如果在起点的网站上退出登录的用户,则cookie立即失效。况且此网页程序只做领取经验操作。之后会将程序开源至github,所以无需担心安全问题
Q:填写了,但没有自动领取
A: 如果您已经手动领取了一个经验,则程序会停留在那个经验点。无法进行下一个的领取,所以请勿手动领取。如果已经领取了,则只能等到第二天重置。