请选择 进入手机版 | 继续访问电脑版

深蓝论坛

搜索
查看: 56|回复: 0

【PHP】全民K歌K歌花园 自动兑换+播种+收货

[复制链接]

522

主题

4

回帖

2026

积分

管理员

蛮荒网络

Rank: 9Rank: 9Rank: 9

积分
2026

勋章4勋章6冰墩墩滑稽单身狗

发表于 2023-9-6 17:46:53 | 显示全部楼层 |阅读模式
cookie 获取方法:
1、打开 https://kg.qq.com/ 扫码登录
2、F12  >> 控制台输入“document.cookie” >> 回车即可获取

获取到的cookie填写到程序里,然后添加监控,1分钟



  1. <?php
  2. $kg = new Kg;
  3. $kg->cookie = ''; // 填写您的cookie
  4. $kg->cron();

  5. Class Kg
  6. {
  7.     public $cookie = '';
  8.     public $config = array(
  9.         'cache_path' => __DIR__.'/kg_cache/',
  10.         'cwxrobot' => 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=0d9b8dc4-46db-46e2-95b5-**************', // 企业微信通知
  11.     );

  12.     public function cron(){
  13.         $this->comm_store(); // K歌花园兑换
  14.         $this->garden();  // K歌花园播种
  15.     }

  16.     // K歌花园
  17.     private function garden(){
  18.         $cache = $this->cache('kg_garden_'.$this->uid());
  19.         if($cache){return $cache;}
  20.         $garden = $this->garden__webapp__info();
  21.         if($garden['code'] == 0)
  22.         {
  23.             $landList = $garden['data']['garden.webapp.info']['garden']['landList'];
  24.             $cron_garden = 60;
  25.             foreach ($landList as $k => $v) {
  26.                 if($v['isActived'] == 1){ // 激活
  27.                     $leftTime = $v['seed']['leftTime']; // 剩余时间
  28.                     if($leftTime == 0){ // 一旦有空位/成熟  直接 一键收 + 一键播
  29.                         $this->garden__webapp__harvest(); // 一键收
  30.                         $rs = $this->garden__webapp__plant(); // 一键播
  31.                         if($rs['subcode'] == '-10003'){
  32.                             $this->cache('kg_garden_'.$this->uid(), $landList, 43200); // 没种子啦  12小时内不执行
  33.                         }
  34.                         return $rs;
  35.                     }
  36.                     // 预估下次执行时间
  37.                     $cron_garden = $leftTime > $cron_garden ? $leftTime : $cron_garden;
  38.                 }
  39.             }
  40.             $this->cache('kg_garden_'.$this->uid(), $landList, $cron_garden);
  41.         }else{
  42.             $this->send('error: '.$this->uid()." cookie Invalid !");
  43.         }
  44.     }

  45.     private function comm_store(){
  46.         $cache = $this->cache('kg_garden_comm_store_'.$this->uid());
  47.         if($cache){return ['message'=>'今日不会再兑换了'];}
  48.         $rs = $this->comm_store__webapp__list();
  49.         if($rs['code'] == 0){
  50.             $balance = $rs['data']['comm_store.webapp.list']['balance']; $leftNum = 0;
  51.             $storeItemList = $rs['data']['comm_store.webapp.list']['storeItemList'];
  52.             foreach ($storeItemList as $key => $v) {
  53.                 $leftNum += $v['leftNum'];
  54.                 if($v['leftNum'] > 0){
  55.                     if($v['cost'] * $v['leftNum'] < $balance){
  56.                         $res = $this->comm_store__webapp__exchange($v['itemId'], $v['leftNum']);
  57.                         $balance = $balance - $v['cost'] * $v['leftNum'];
  58.                     }else{
  59.                         $this->cache('kg_garden_comm_store_'.$this->uid(), $storeItemList, strtotime(date('Y-m-d H:i:s')) + 86400 - time());
  60.                         return false; // 意思是最少需要有2000金币  不然不会执行兑换  只能自己兑换
  61.                     }  
  62.                 }
  63.             }
  64.             $leftNum == 0 ? $this->cache('kg_garden_comm_store_'.$this->uid(), $storeItemList, strtotime(date('Y-m-d H:i:s')) + 86400 - time()) : '';
  65.         }
  66.     }

  67.     // 兑换种子
  68.     private function comm_store__webapp__exchange($t_itemId, $t_num)
  69.     {
  70.         $url = 'https://node.kg.qq.com/webapp/proxy?t_storeId=8&t_uid=' . $this->uid() . '&t_itemId=' . $t_itemId . '&t_num=' . $t_num . '&ns=proto_comm_store_webapp&cmd=comm_store.webapp.exchange&ns_inbuf=&cmdPrefix=&mapExt=JTdCJTIyZmlsZSUyMiUzQSU3QiUyMmZpbGVQYXRoUmVsYXRpdmVPdXRwdXQlMjIlM0ElMjJqY2VfbmV3JTJGa2clMkZjb21tX3N0b3JlJTJGcHJvdG9fY29tbV9zdG9yZV93ZWJhcHBfdjIuanMlMjIlMkMlMjJkZXBGaWxlUGF0aFJlbGF0aXZlT3V0cHV0JTIyJTNBJTVCJTVEJTdEJTJDJTIyY21kTmFtZSUyMiUzQSUyMlN0b3JlRXhjaGFuZ2VSZXElMjIlMkMlMjJ3bnNEaXNwYXRjaGVyJTIyJTNBdHJ1ZSU3RA%3D%3D&g_tk=5381&g_tk_openkey=245581372';
  71.         $headers = array(
  72.             'Host: node.kg.qq.com',
  73.             'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0',
  74.             'Accept: application/json, text/plain, */*',
  75.             'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
  76.             'Accept-Encoding: gzip, deflate, br',
  77.             'Referer: https://kg.qq.com/',
  78.             'Origin: https://kg.qq.com',
  79.             'Sec-Fetch-Dest: empty',
  80.             'Sec-Fetch-Mode: cors',
  81.             'Sec-Fetch-Site: same-site',
  82.             'Connection: keep-alive',
  83.             'Cookie: ' . $this->cookie,
  84.         );
  85.         $rs = json_decode($this->request($url, $headers),true);
  86.         return $rs;
  87.     }

  88.     // 查询剩余可兑换种子
  89.     private function comm_store__webapp__list(){
  90.         $url = 'https://node.kg.qq.com/webapp/proxy?t_storeId=8&t_uid=' . $this->uid() . '&t_num=20&t_typeId=1&t_passback=&ns=proto_comm_store_webapp&cmd=comm_store.webapp.list&ns_inbuf=&cmdPrefix=&mapExt=JTdCJTIyZmlsZSUyMiUzQSU3QiUyMmZpbGVQYXRoUmVsYXRpdmVPdXRwdXQlMjIlM0ElMjJqY2VfbmV3JTJGa2clMkZjb21tX3N0b3JlJTJGcHJvdG9fY29tbV9zdG9yZV93ZWJhcHBfdjIuanMlMjIlMkMlMjJkZXBGaWxlUGF0aFJlbGF0aXZlT3V0cHV0JTIyJTNBJTVCJTVEJTdEJTJDJTIyY21kTmFtZSUyMiUzQSUyMkNvbW1TdG9yZUxpc3RSZXElMjIlMkMlMjJ3bnNEaXNwYXRjaGVyJTIyJTNBdHJ1ZSU3RA%3D%3D&g_tk=5381&g_tk_openkey=245581372';
  91.         $headers = array(
  92.             'Host: node.kg.qq.com',
  93.             'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0',
  94.             'Accept: application/json, text/plain, */*',
  95.             'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
  96.             'Accept-Encoding: gzip, deflate, br',
  97.             'Referer: https://kg.qq.com/',
  98.             'Origin: https://kg.qq.com',
  99.             'Sec-Fetch-Dest: empty',
  100.             'Sec-Fetch-Mode: cors',
  101.             'Sec-Fetch-Site: same-site',
  102.             'Connection: keep-alive',
  103.             'Cookie: ' . $this->cookie,
  104.         );
  105.         $rs = json_decode($this->request($url, $headers),true);
  106.         return $rs;
  107.     }

  108.     // K歌花园 获取种植信息
  109.     private function garden__webapp__info(){
  110.         $url = 'https://node.kg.qq.com/webapp/proxy';
  111.         $url .= '?t_uid=' . $this->uid();
  112.         $url .= '&ns=proto_garden_webapp&cmd=garden.webapp.info&g_tk=5381&g_tk_openkey=1469557487';
  113.         $url .= '&mapExt=JTdCJTIyZmlsZSUyMiUzQSU3QiUyMmZpbGVQYXRoUmVsYXRpdmVPdXRwdXQlMjIlM0ElMjJqY2VfbmV3JTJGa2clMkZnYXJkZW4lMkZwcm90b19nYXJkZW5fd2ViYXBwX3YyLmpzJTIyJTJDJTIyZGVwRmlsZVBhdGhSZWxhdGl2ZU91dHB1dCUyMiUzQSU1QiUyMmpjZV9uZXclMkZrZyUyRnVuaV9wYXlfcHJveHklMkZ1bmlfcGF5X3Byb3h5X3YyLmpzJTIyJTVEJTdEJTJDJTIyY21kTmFtZSUyMiUzQSUyMkdhcmRlbkluZm9SZXElMjIlMkMlMjJ3bnNEaXNwYXRjaGVyJTIyJTNBdHJ1ZSU3RA=='; // 好大一个包
  114.         //$url .= '&t_source=&t_deviceInfo=&ns_inbuf=&cmdPrefix=';
  115.         $headers = array(
  116.             'Host: node.kg.qq.com',
  117.             'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0',
  118.             'Accept: application/json, text/plain, */*',
  119.             'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
  120.             'Accept-Encoding: gzip, deflate, br',
  121.             'Referer: https://kg.qq.com/',
  122.             'Origin: https://kg.qq.com',
  123.             'Sec-Fetch-Dest: empty',
  124.             'Sec-Fetch-Mode: cors',
  125.             'Sec-Fetch-Site: same-site',
  126.             'Connection: keep-alive',
  127.             'Cookie: ' . $this->cookie,
  128.         );
  129.         $rs = json_decode($this->request($url, $headers),true); // ['data']['garden.webapp.info']['garden']['landList']
  130.         return $rs;
  131.     }

  132.     // K歌花园 指定收获  多此一举...
  133.     private function garden__webapp__timer_report($t_landId=''){
  134.         $url = 'https://node.kg.qq.com/webapp/proxy?t_landId='.$t_landId.'&t_passback=&t_deviceInfo=&ns=proto_garden_webapp&cmd=garden.webapp.timer_report&ns_inbuf=&cmdPrefix=&mapExt=JTdCJTIyZmlsZSUyMiUzQSU3QiUyMmZpbGVQYXRoUmVsYXRpdmVPdXRwdXQlMjIlM0ElMjJqY2VfbmV3JTJGa2clMkZnYXJkZW4lMkZwcm90b19nYXJkZW5fd2ViYXBwX3YyLmpzJTIyJTJDJTIyZGVwRmlsZVBhdGhSZWxhdGl2ZU91dHB1dCUyMiUzQSU1QiUyMmpjZV9uZXclMkZrZyUyRnVuaV9wYXlfcHJveHklMkZ1bmlfcGF5X3Byb3h5X3YyLmpzJTIyJTVEJTdEJTJDJTIyY21kTmFtZSUyMiUzQSUyMlRpbWVyUmVwb3J0UmVxJTIyJTJDJTIyd25zRGlzcGF0Y2hlciUyMiUzQXRydWUlN0Q%3D&g_tk=5381&g_tk_openkey=1469557487';
  135.         $headers = array(
  136.             'Host: node.kg.qq.com',
  137.             'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0',
  138.             'Accept: application/json, text/plain, */*',
  139.             'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
  140.             'Accept-Encoding: gzip, deflate, br',
  141.             'Referer: https://kg.qq.com/',
  142.             'Origin: https://kg.qq.com',
  143.             'Sec-Fetch-Dest: empty',
  144.             'Sec-Fetch-Mode: cors',
  145.             'Sec-Fetch-Site: same-site',
  146.             'Connection: keep-alive',
  147.             'Cookie: ' . $this->cookie,
  148.         );
  149.         $rs = json_decode($this->request($url, $headers),true);
  150.         return $rs;
  151.     }

  152.     // K歌花园 一键收获
  153.     private function garden__webapp__harvest(){
  154.         $url = 'https://node.kg.qq.com/webapp/proxy?t_uid='.$this->uid().'&t_deviceInfo=&t_oneClick=1&ns=proto_garden_webapp&cmd=garden.webapp.harvest&ns_inbuf=&cmdPrefix=&mapExt=JTdCJTIyZmlsZSUyMiUzQSU3QiUyMmZpbGVQYXRoUmVsYXRpdmVPdXRwdXQlMjIlM0ElMjJqY2VfbmV3JTJGa2clMkZnYXJkZW4lMkZwcm90b19nYXJkZW5fd2ViYXBwX3YyLmpzJTIyJTJDJTIyZGVwRmlsZVBhdGhSZWxhdGl2ZU91dHB1dCUyMiUzQSU1QiUyMmpjZV9uZXclMkZrZyUyRnVuaV9wYXlfcHJveHklMkZ1bmlfcGF5X3Byb3h5X3YyLmpzJTIyJTVEJTdEJTJDJTIyY21kTmFtZSUyMiUzQSUyMkdhcmRlbkhhcnZlc3RSZXElMjIlMkMlMjJ3bnNEaXNwYXRjaGVyJTIyJTNBdHJ1ZSU3RA%3D%3D&g_tk=5381&g_tk_openkey=1469557487';
  155.         $headers = array(
  156.             'Host: node.kg.qq.com',
  157.             'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0',
  158.             'Accept: application/json, text/plain, */*',
  159.             'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
  160.             'Accept-Encoding: gzip, deflate, br',
  161.             'Referer: https://kg.qq.com/',
  162.             'Origin: https://kg.qq.com',
  163.             'Sec-Fetch-Dest: empty',
  164.             'Sec-Fetch-Mode: cors',
  165.             'Sec-Fetch-Site: same-site',
  166.             'Connection: keep-alive',
  167.             'Cookie: ' . $this->cookie,
  168.         );
  169.         $rs = json_decode($this->request($url, $headers),true);
  170.         return $rs;
  171.     }

  172.     // K歌花园 一键播种
  173.     private function garden__webapp__plant(){
  174.         $url = 'https://node.kg.qq.com/webapp/proxy?t_uid='.$this->uid().'&t_seedId=0&t_landId=0&t_deviceInfo=&t_oneClick=1&ns=proto_garden_webapp&cmd=garden.webapp.plant&ns_inbuf=&cmdPrefix=&mapExt=JTdCJTIyZmlsZSUyMiUzQSU3QiUyMmZpbGVQYXRoUmVsYXRpdmVPdXRwdXQlMjIlM0ElMjJqY2VfbmV3JTJGa2clMkZnYXJkZW4lMkZwcm90b19nYXJkZW5fd2ViYXBwX3YyLmpzJTIyJTJDJTIyZGVwRmlsZVBhdGhSZWxhdGl2ZU91dHB1dCUyMiUzQSU1QiUyMmpjZV9uZXclMkZrZyUyRnVuaV9wYXlfcHJveHklMkZ1bmlfcGF5X3Byb3h5X3YyLmpzJTIyJTVEJTdEJTJDJTIyY21kTmFtZSUyMiUzQSUyMkdhcmRlblBsYW50UmVxJTIyJTJDJTIyd25zRGlzcGF0Y2hlciUyMiUzQXRydWUlN0Q%3D&g_tk=5381&g_tk_openkey=1469557487';
  175.         $headers = array(
  176.             'Host: node.kg.qq.com',
  177.             'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0',
  178.             'Accept: application/json, text/plain, */*',
  179.             'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
  180.             'Accept-Encoding: gzip, deflate, br',
  181.             'Referer: https://kg.qq.com/',
  182.             'Origin: https://kg.qq.com',
  183.             'Sec-Fetch-Dest: empty',
  184.             'Sec-Fetch-Mode: cors',
  185.             'Sec-Fetch-Site: same-site',
  186.             'Connection: keep-alive',
  187.             'Cookie: ' . $this->cookie,
  188.         );
  189.         $rs = json_decode($this->request($url, $headers),true);
  190.         return $rs;
  191.     }

  192.     // 获取 uid  
  193.     private function uid(){
  194.         $cookie = explode("; ", $this->cookie); $cookie_array = array();
  195.         foreach ($cookie as $key => $value) {
  196.             $va = explode("=", $value);
  197.             $cookie_array[$va[0]] = $va[1];
  198.         }
  199.         if(!isset($cookie_array['uid'])){exit("cookie is invalid");}
  200.         return $cookie_array['uid'];
  201.     }

  202.     // 发送通知
  203.     private function send($message){
  204.         $mess = array(
  205.             'msgtype' => 'text',
  206.             'text' => array(
  207.                 'content' => $message,
  208.             ),
  209.         );
  210.         $result = $this->request($this->config['cwxrobot'],['Content-Type: application/json'],json_encode($mess),"POST");
  211.         return $result;
  212.     }

  213.     private function cache($name, $value ='', $expires_in='')
  214.     {
  215.         if(!is_dir($this->config['cache_path'])){mkdir($this->config['cache_path']);}
  216.         $key = md5($name);
  217.         $cache_file = $this->config['cache_path'].$key.'.txt';
  218.         if($value == '' && $expires_in == ''){
  219.             if(is_file($cache_file)){
  220.                 $cache = unserialize(file_get_contents($cache_file));
  221.                 if($cache['expires_in'] > time()){
  222.                     return $cache['data'];
  223.                 }
  224.             }
  225.             return false;
  226.         }elseif($value != '' && $value != null){
  227.             $cache = array('data' => $value, 'expires_in' => time() + $expires_in);
  228.             file_put_contents($cache_file, serialize($cache));
  229.         }elseif($value == null){
  230.             is_file($cache_file) ? unlink($cache_file) : '';
  231.         }
  232.     }

  233.     private function request($Url, $Header = null, $Data = null, $Method = "GET"){
  234.         $ch = curl_init();
  235.         $Header = $Header ? $Header : array("Content-Type:application/json;charset=utf-8;","Accept:application/json");
  236.         curl_setopt($ch, CURLOPT_URL, $Url);
  237.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  238.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  239.         if($Method == 'GET'){
  240.             curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
  241.             curl_setopt($ch, CURLOPT_POST, false);
  242.             curl_setopt($ch, CURLOPT_POSTFIELDS, $Data);
  243.         }
  244.         if($Method == 'POST'){
  245.             curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'POST');
  246.             curl_setopt($ch, CURLOPT_POST, true);
  247.             curl_setopt($ch, CURLOPT_POSTFIELDS, $Data);
  248.         }
  249.         if($Method == 'PUT'){
  250.             curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
  251.             curl_setopt($ch, CURLOPT_POSTFIELDS, $Data);
  252.         }
  253.         if($Method == 'DELETE'){
  254.             curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
  255.             curl_setopt($ch, CURLOPT_POSTFIELDS, $Data);
  256.         }
  257.         if($Method == 'PATCH'){
  258.             curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
  259.             curl_setopt($ch, CURLOPT_POSTFIELDS, $Data);
  260.         }
  261.         curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  262.         curl_setopt($ch, CURLOPT_HTTPHEADER, $Header);
  263.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  264.         curl_setopt($ch, CURLOPT_ENCODING, 'gzip');

  265.         $output = curl_exec($ch);
  266.         curl_close($ch);
  267.         return $output;
  268.     }
  269. }

  270. ?>
复制代码


大牛马一个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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