腾讯视频自动签到(Python + 腾讯云函数实现)

环境准备

腾讯云函数

签到代码

现版本的腾讯视频每天都需要手动签到获取V力值才能升级,有时候还容易忘记。作为一名程序员,这种重复的工作我们当然让程序来干啦!参考了一些大佬的文章,结合自己的测试,将代码做了一定的简化。话不多说,先上一段代码,再给大家逐步讲解。

def tencent_video_sign_in():
	"""
	腾讯视频签到函数
	"""
    millisecond_time = round(time.time() * 1000)

    login_url = "https://access.video.qq.com/user/auth_refresh" \
                "?vappid=1******4" \
                "&vsecret=f******e" \
                "&type=qq" \
                "&g_vstk=3******7" \
                "&g_actk=1******2" \
                f"&_={millisecond_time}"

    login_cookie = "vqq_vuserid=1******9; " \
                   "vqq_openid=0******A; " \
                   "vqq_access_token=5******A; " \
                   "vqq_vusession=v******.; "

    login_headers = {
        'Referer': 'https://v.qq.com',
        'Cookie': login_cookie
    }

    login_rsp = requests.get(url=login_url, headers=login_headers)
    login_rsp_cookie = requests.utils.dict_from_cookiejar(login_rsp.cookies)
    print(login_rsp_cookie)
    if login_rsp.status_code == 200 and login_rsp_cookie:
        auth_cookie = "main_login=qq; " \
                      f"vqq_vusession={login_rsp_cookie['vqq_vusession']}; "

        print(auth_cookie)
        sign_in_url = "https://vip.video.qq.com/fcgi-bin/comm_cgi?name=hierarchical_task_system&cmd=2" \
                      f"&_={str(millisecond_time)}"

        sign_headers = {
            "User-Agent": "Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; Mi Note 3 Build/OPM1.171019.019) "
                          "AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 "
                          "Mobile Safari/537.36 XiaoMi/MiuiBrowser/10.0.2",
            "Cookie": auth_cookie
        }
        sign_rsp = requests.get(url=sign_in_url, headers=sign_headers)
        sign_rsp_str = sign_rsp.text
        # QZOutputJson=({ "ret": 0,"checkin_score": 0,"msg":"OK"});
        # QZOutputJson=({"msg":"Account Verify Error","ret":-10006});
        start_index = sign_rsp_str.index("(")
        end_index = sign_rsp_str.index(")")
        rsp_dict = json.loads(sign_rsp_str[start_index + 1:end_index])

        if rsp_dict.get("ret") == -10006:
            result_msg = "腾讯视频-签到结果:{}".format("Cookie无效!")
        elif rsp_dict.get("ret") == 0:
            result_msg = "腾讯视频-签到结果:{}({})".format("签到成功!", rsp_dict.get("checkin_score"))
        else:
            result_msg = "腾讯视频-签到结果:{}".format("未知错误!!!")
    else:
        result_msg = "腾讯视频-签到结果:{}".format("未获取到Cookie信息!")
    print(result_msg)
    return result_msg

上面代码打上*号的部分,是需要根据自己的情况获取并填写的信息。

Cookie获取步骤

以下步骤以Google Chrome浏览器为例:

  1. 打开腾讯视频;
  2. F12打开控制台,在Network中过滤auth_refresh关键词;
  3. 登录自己的腾讯视频账号,登录之后会出现链接,点击链接即可在右边看到详细信息;
  4. 将链接中的vappid,vsecret,g_vstk的参数值复制到自己的代码中去;
    腾讯视频自动签到(Python + 腾讯云函数实现)_第1张图片
    腾讯视频自动签到(Python + 腾讯云函数实现)_第2张图片
  5. 打开Cookie页面,把返回的Cookie信息填入自己的代码中;
    腾讯视频自动签到(Python + 腾讯云函数实现)_第3张图片
    腾讯视频自动签到(Python + 腾讯云函数实现)_第4张图片

签到结果微信通知

参照:https://wxpusher.zjiecode.com/docs/
贴一段推送签到结果的代码供大家参考:

def weixin_notification(msg):
    token = "AT_****XXXXXX"
    url = "http://wxpusher.zjiecode.com/api/send/message"
    body = {
        "appToken": token,
        "content": msg,
        "contentType": 1,
        "uids": [
            "XXX****XXX"
        ]
    }
    headers = {
        'Content-Type': 'application/json'
    }
    response = requests.post(url=url, headers=headers, json=body)
    print(response.text)

腾讯云函数部署

部署到腾讯云函数,开启每天定时执行函数签到
链接:https://console.cloud.tencent.com/scf/list

  1. 新建一个云函数
    腾讯视频自动签到(Python + 腾讯云函数实现)_第5张图片
  2. 在下面把自己的代码复制粘贴进去
    腾讯视频自动签到(Python + 腾讯云函数实现)_第6张图片
    代码段如下,部分信息已打码,须按上述方式根据自己的实际情况来填:
# -*- coding: utf8 -*-
import requests
import requests.utils
import time
import json


def tencent_video_sign_in():
	"""
	腾讯视频签到函数
	"""
    millisecond_time = round(time.time() * 1000)

    login_url = "https://access.video.qq.com/user/auth_refresh" \
                "?vappid=1******4" \
                "&vsecret=f******e" \
                "&type=qq" \
                "&g_vstk=3******7" \
                "&g_actk=1******2" \
                f"&_={millisecond_time}"

    login_cookie = "vqq_vuserid=1******9; " \
                   "vqq_openid=0******A; " \
                   "vqq_access_token=5******A; " \
                   "vqq_vusession=v******.; "

    login_headers = {
        'Referer': 'https://v.qq.com',
        'Cookie': login_cookie
    }

    login_rsp = requests.get(url=login_url, headers=login_headers)
    login_rsp_cookie = requests.utils.dict_from_cookiejar(login_rsp.cookies)
    print(login_rsp_cookie)
    if login_rsp.status_code == 200 and login_rsp_cookie:
        auth_cookie = "main_login=qq; " \
                      f"vqq_vusession={login_rsp_cookie['vqq_vusession']}; "

        print(auth_cookie)
        sign_in_url = "https://vip.video.qq.com/fcgi-bin/comm_cgi?name=hierarchical_task_system&cmd=2" \
                      f"&_={str(millisecond_time)}"

        sign_headers = {
            "User-Agent": "Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; Mi Note 3 Build/OPM1.171019.019) "
                          "AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 "
                          "Mobile Safari/537.36 XiaoMi/MiuiBrowser/10.0.2",
            "Cookie": auth_cookie
        }
        sign_rsp = requests.get(url=sign_in_url, headers=sign_headers)
        sign_rsp_str = sign_rsp.text
        # QZOutputJson=({ "ret": 0,"checkin_score": 0,"msg":"OK"});
        # QZOutputJson=({"msg":"Account Verify Error","ret":-10006});
        start_index = sign_rsp_str.index("(")
        end_index = sign_rsp_str.index(")")
        rsp_dict = json.loads(sign_rsp_str[start_index + 1:end_index])

        if rsp_dict.get("ret") == -10006:
            result_msg = "腾讯视频-签到结果:{}".format("Cookie无效!")
        elif rsp_dict.get("ret") == 0:
            result_msg = "腾讯视频-签到结果:{}({})".format("签到成功!", rsp_dict.get("checkin_score"))
        else:
            result_msg = "腾讯视频-签到结果:{}".format("未知错误!!!")
    else:
        result_msg = "腾讯视频-签到结果:{}".format("未获取到Cookie信息!")
    print(result_msg)
    return result_msg


def weixin_notification(msg):
    token = "AT_****XXXXXX"
    url = "http://wxpusher.zjiecode.com/api/send/message"
    body = {
        "appToken": token,
        "content": msg,
        "contentType": 1,
        "uids": [
            "XXX****XXX"
        ]
    }
    headers = {
        'Content-Type': 'application/json'
    }
    response = requests.post(url=url, headers=headers, json=body)
    print(response.text)


def main_handler(event, context):
    result = tencent_video_sign_in()
    weixin_notification(result)
    return result


if __name__ == '__main__':
    weixin_notification(tencent_video_sign_in())

  1. 配置触发器,每天上午10点执行,如图:
    腾讯视频自动签到(Python + 腾讯云函数实现)_第7张图片
  2. 部署完成之后我们测试一下
    腾讯视频自动签到(Python + 腾讯云函数实现)_第8张图片

你可能感兴趣的:(其他,python,cookie,腾讯)