博主原创文章,转载请说明出处,但是不说我也管不了你🏳️
前言
不知道从什么时候起,万恶的腾讯视频改了会员成长机制,而后以前躺着就能获得会员成长值任务的时代一去不复返。
腾讯视频会员成长机制改版
现在,作为尊贵的VIP用户,居然只能靠每天手动签到去获得成长值,有时甚至只有几个点,你隔这打发叫花子呢?就这还想让我来给你亲自签到?我二话不说,直接发动CV大招,百度+谷歌+CSDN+github四件套,轻松解决自动签到问题,麻麻再也不用担心我的会员成长值涨得慢啦!
开启自动签到后,轻松升级V7不是梦
注意,本文章中实现的自动签到功能基于js编写(完整代码见附录完整实现代码 ),并由金山在线文档中的定时任务实现运行(免费、稳定且给力熬),实现原理是利用cookie完成身份验证并访问签到接口,所以需要在cookie过期时手动获取并更新cookie值。
正文
一、快速部署腾讯视频会员自动签到任务
1.1 登录金山在线文档
进入金山文档首页 ,点击进入网页版后,选择自己所需要的方式登录金山文档。
金山文档首页
1.2
新建一个空白表格并添加一个文档共享脚本
①依次选择新建->表格,创建一个空白表格,右键表格名将表格命名为tencent
。
新建空白表格
重命名表格名
②创建完成后,鼠标移到表格上方工具栏,依次选择效率->高级开发->AirScript脚本编辑器,并选择创建一个文档共享脚本,命名任意。
创建一个空脚本文件
③将附录完整实现代码 复制粘贴到代码编辑区域
复制代码
④点击服务->添加服务,为脚本添加服务。将云文档API、邮件API、网络API服务都添加。
为脚本添加服务
添加三个服务
1.3
添加表格定时任务来定时运行脚本
选择效率->高级开发->定时任务->创造任务,添加定时任务,定时任务执行的脚本选择刚刚创建的脚本。
创建定时任务
1.4
配置执行(代码)任务所需要的参数
①打开电脑浏览器(这里用的是谷歌,其余浏览器基本大差不差),进入腾讯视频官网 登录自己的会员账号,右键打开开发者工具栏,切换视图为手机(见电脑上浏览器如何让网页显示成手机模式?
↩︎),并在浏览器地址框输入https://m.v.qq.com/
,刷新网页。
②从开发者工具栏中找到login_url与login_cookie信息,如图(第一个红圈为切换为手机模式):
开发者工具栏
依次选择NetWork(网络)->filter(过滤),输入refre,找到auth_refresh?xxx
,点击后右侧栏出现详细信息,点击右侧栏详细信息的Headers(头信息)。然后在头信息中找到login_url与login_cookie,如图:
login_url
login_cookie
③将上面所说的login_url与login_cookie的值(值是冒号后面的值)复制到表格中,如图(注意值位置,login_url值在单元格A2,login_cookie值在单元格B2,如需要改变位置需要修改代码):
配置值
⑤邮箱配置为可选,可按照自己的要求配置。若需要发送到自己的邮箱,需要准备一个发送邮箱,一个接收邮箱,并且
在表格中配置完信息后还需要在代码中配置相关信息,若不需要则在相应表格处填否,且不用在代码中修改值。
需要修改的代码如下,该代码块位于完整实现代码 的最底部:
JAVASCRIPT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 function send_email ( ){ let mailer = SMTP .login ({ host : "smtp.qq.com" , port : 465 , username : "[email protected] " , password : "xxx" , secure : true }); mailer.send ({ from : "腾讯视频签到<[email protected] >" , to : email_address, subject : "腾讯视频签到通知-" +local_date, text : execute_result, }) }
二、代码实现详解与方法总结
2.1 AirScipt中的API
官网写得很清楚。注:本文中的功能实现非常基础,几乎未做任何异常处理,望周知。
2.2 方法总结
发现没啥好总结的,主要就是抓包,能抓到包什么都好说。可以看出来腾讯视频会员签到的接口是没有那种每次都动态加密的,也就是每次请求都要携带一串不同的“密文”(点名批评某B,爬不了一点),所以用Cookie很容易就解决了验证问题。
附录
完整实现代码
注意:代码中除了邮件中的参数必须自己配置外,其余参数都是配置要求都是可选的,或者是在表格文件中完成配置的(因为写死在代码中修改太麻烦了)。
JAVASCRIPT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 var sheets = Application .Sheets ;var sheet;for (let i = 1 ; i <= sheets.Count ; i++) { if ((sheets.Item (i).Name )==="tencent" ){ sheet = sheets.Item (i); } }var myDate = new Date ();var local_date = myDate.toLocaleDateString ();var email_address = sheet.Range ("B9" ).Text ;var email_send_bool = sheet.Range ("B8" ).Text ;var login_url_data = sheet.Range ("A2" ).Text ;var login_cookie_data = sheet.Range ("B2" ).Text ;var execute_result = "" ; execute_result = tencent_video_sign_in ();if (email_send_bool=="是" ){ send_email (); }else { console .log (execute_result); }function tencent_video_sign_in ( ){ let login_url = "https://access.video.qq.com/user/auth_refresh?vappid=xxx&vsecret=xxx&type=qq&g_tk=&g_vstk=xxx&g_actk=xxx" ; let login_cookie = 'xxx' ; login_url = login_url_data; login_cookie = login_cookie_data; let auth_cookie = 'app_ver=8.8.10.25828;call_type=1;isDarkMode=1;deviceModel=Unknown iPad;systemVersion=16.2;main_login=qq;vdevice_qimei36=d4641bb8597a7ebaa497cbd900001c916614;' ; let login_resp = HTTP .get ( login_url,{ headers :{ 'Referer' : 'https://v.qq.com' , 'Cookie' : login_cookie } } ); if (login_resp.status ===200 ){ let cookiesArr_in_resp = login_resp.headers ['set-cookie' ]; let cookie_json_str = "{" ; for (let count=0 ;count<cookiesArr_in_resp.length ;count++){ cookie_json_str = cookie_json_str + "\"" +cookiesArr_in_resp[count].split (";" )[0 ].replace ("=" ,"\":\"" ) + "\"" ; if (count+1 <cookiesArr_in_resp.length ){ cookie_json_str = cookie_json_str + "," ; } } cookie_json_str = cookie_json_str+"}" ; let cookie_json = JSON .parse (cookie_json_str); auth_cookie = auth_cookie+'vqq_vusession=' +cookie_json['vqq_vusession' ]+';' +'vqq_access_token=' +cookie_json['vqq_access_token' ]+';' +'vqq_appid=' +cookie_json['vqq_appid' ]+';' +'vqq_openid=' +cookie_json['vqq_openid' ]+';' +'vqq_refresh_token=' +cookie_json['vqq_refresh_token' ]+';' +'vqq_vuserid=' +cookie_json['vqq_vuserid' ]+';' let sign_in_url = "https://vip.video.qq.com/rpc/trpc.new_task_system.task_system.TaskSystem/CheckIn?rpc_data={}" let referer = 'https://film.video.qq.com/x/grade/?ovscroll=0&ptag=Vgrade.card&source=page_id=default&ztid=default&pgid=page_personal_center&page_type=personal&is_interactive_flag=1&pg_clck_flag=1&styletype=201&mod_id=sp_mycntr_vip§iontype=2&business=hollywood&layouttype=1000§ion_idx=0&mod_title=会员资产&blocktype=6001&vip_id=userCenter_viplevel_entry&mod_idx=11&item_idx=4&eid=button_mycntr&action_pos=jump&hidetitlebar=1&isFromJump=1&isDarkMode=1&uiType=HUGE' ; referer = encodeURI (referer); let sign_resp = HTTP .get ( sign_in_url,{ headers :{ 'Referer' : referer, 'Host' : 'vip.video.qq.com' , 'Origin' : 'https://film.video.qq.com' , 'User-Agent' : 'Mozilla/5.0 (iPad; CPU OS 16_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A465 QQLiveBrowser/8.8.10 AppType/HD WebKitCore/WKWebView iOS GDTTangramMobSDK/4.370.6 GDTMobSDK/4.370.6 cellPhone/Unknown iPad AppBuild/25828' , 'Accept-Encoding' : 'gzip, deflate, br' , "Cookie" : auth_cookie } } ); let sign_result_json = sign_resp.json (); if (sign_result_json['ret' ]!=0 ){ execute_result = execute_result + "签到失败,错误信息:" +sign_result_json['err_msg' ]; }else { execute_result = execute_result + "签到成功,签到积分:" +sign_result_json['check_in_score' ]; } }else { execute_result = execute_result + "签到请求异常." } return execute_result; }function send_email ( ){ let mailer = SMTP .login ({ host : "smtp.qq.com" , port : 465 , username : "[email protected] " , password : "xxxx" , secure : true }); mailer.send ({ from : "腾讯视频签到<[email protected] >" , to : email_address, subject : "腾讯视频签到通知-" +local_date, text : execute_result, }) }
参考资料