• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python模拟登录网易云音乐并自动签到

    一、开发工具

    **Python****版本:**3.6.4

    相关模块:

    DecryptLogin模块;

    argparse模块;

    以及一些Python自带的模块。

    二、环境搭建

    安装Python并添加到环境变量,pip安装需要的相关模块即可。

    三、原理简介

    既然要签到,首先,自然是需要模拟登录啦,这里我们还是简单地利用我们开源的DecryptLogin库来实现网易云音乐的模拟登录:

    '''模拟登录'''
    @staticmethod
    def login(username, password):
      lg = login.Login()
      _, session = lg.music163(username, password)
      return session

    成功登录之后,我们来分析一下如何实现网易云音乐的自动签到。按F12打开开发者工具或鼠标右键检测,然后点击一下网易云音乐的签到按钮:

    可以发现一个疑似签到用的post请求:

    其链接构成为:

    'https://music.163.com/weapi/point/dailyTask?csrf_token=' + csrf

    之前的文章里我们说过,csrf这个参数在登录后的cookies里可以找到,类似这样:

    csrf = re.findall('__csrf=(.*?) for', str(session.cookies))[0]

    所以我们现在要解决的问题是如何找到该post请求需要提交的data的原文,因为网页里看到的内容是加密后的,就像这样:

    第一个显然是我们找到签到接口,那就点开第二个看看吧:

    query不会就是我们想要的原文吧。尝试成功的话岂不是血赚?于是,调用一下DecryptLogin库里写好的网易云音乐post参数加密算法,来加密一下data(网易云音乐所有post请求的携带的data原文都要先用一个加密算法进行加密之后再提交):

    from DecryptLogin.platforms.music163 import Cracker
    
    cracker = Cracker()
    # 注: typeid为0代表APP上签到, 为1代表在网页上签到
    data = {
              'type': typeid
            }
    data = cracker.get(data)
    

    然后发送请求测试一下:

    signin_url = 'https://music.163.com/weapi/point/dailyTask?csrf_token=' + csrf
    headers = {
          'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
          'Content-Type': 'application/x-www-form-urlencoded',
          'Referer': 'http://music.163.com/discover',
          'Accept': '*/*'
        }
    res = self.session.post(signin_url, headers=headers, data=data)
    

    发现返回的数据是这样的:

    这个结果说明我们刚刚的猜想完全正确,只是因为我们已经签到过了,所以才显示重复签到。最后,为了节约每天在命令行输入账号密码的时间,我们可以在脚本的最前面添加几行代码:

    if os.path.exists('config.json'):
      f = open('config.json', 'r', encoding='utf-8')
      info = json.load(f)
      f.close()
    else:
      args = parseArgs()
      info = {'username': args.username, 'password': args.password}
      f = open('config.json', 'w', encoding='utf-8')
      json.dump(info, f)
      f.close()
    

    解释一下代码含义,就是如果当前文件夹里有config.json这个文件:

    那么我们就直接从这个json文件里读取用户的账户名密码,否则就启动命令行参数解析函数:

    '''命令行参数解析'''
    def parseArgs():
      parser = argparse.ArgumentParser(description='网易云音乐自动签到')
      parser.add_argument('--username', dest='username', help='用户名', type=str, required=True)
      parser.add_argument('--password', dest='password', help='密码', type=str, required=True)
      args = parser.parse_args()
      return args
    

    让用户手动输入账户密码,并自动保存到config.json这个文件中,这样下次就不需要再重新输入一遍账户密码啦。

    四、效果展示

    运行方式:

    python signin.py --username 用户名 --password 密码

    到此这篇关于Python模拟登录网易云音乐并自动签到的文章就介绍到这了,更多相关Python模拟登录并签到内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python爬虫之自动爬取某车之家各车销售数据
    • Python一行代码实现自动发邮件功能
    • 使用Gitee自动化部署python脚本的详细过程
    • Python实现网络自动化eNSP
    • python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
    • Python+Appium实现自动抢微信红包
    • 浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
    • Python自动化之定位方法大杀器xpath
    • 还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
    上一篇:python列表和字符串的三种逆序遍历操作
    下一篇:详解Python生成器和基于生成器的协程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python模拟登录网易云音乐并自动签到 Python,模拟,登录,网易,云,