中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python模擬登錄網易云音樂并自動簽到

發布時間:2021-06-03 17:46:31 來源:億速云 閱讀:272 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關Python模擬登錄網易云音樂并自動簽到,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

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

成功登錄之后,我們來分析一下如何實現網易云音樂的自動簽到。按F12打開開發者工具或鼠標右鍵檢測,然后點擊一下網易云音樂的簽到按鈕:

Python模擬登錄網易云音樂并自動簽到

可以發現一個疑似簽到用的post請求:

Python模擬登錄網易云音樂并自動簽到

其鏈接構成為:

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

之前的文章里我們說過,csrf這個參數在登錄后的cookies里可以找到,類似這樣:

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

所以我們現在要解決的問題是如何找到該post請求需要提交的data的原文,因為網頁里看到的內容是加密后的,就像這樣:

Python模擬登錄網易云音樂并自動簽到

Python模擬登錄網易云音樂并自動簽到

第一個顯然是我們找到簽到接口,那就點開第二個看看吧:

Python模擬登錄網易云音樂并自動簽到

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)

發現返回的數據是這樣的:

Python模擬登錄網易云音樂并自動簽到

這個結果說明我們剛剛的猜想完全正確,只是因為我們已經簽到過了,所以才顯示重復簽到。最后,為了節約每天在命令行輸入賬號密碼的時間,我們可以在腳本的最前面添加幾行代碼:

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這個文件:

Python模擬登錄網易云音樂并自動簽到

那么我們就直接從這個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()

看完上述內容,你們對Python模擬登錄網易云音樂并自動簽到有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泉州市| 唐河县| 普洱| 油尖旺区| 安西县| 内丘县| 大新县| 筠连县| 永川市| 阿尔山市| 涪陵区| 宜兰市| 于都县| 额敏县| 新宁县| 肃北| 阿拉善右旗| 东丽区| 太仓市| 含山县| 建始县| 郯城县| 曲阜市| 乌什县| 双柏县| 黄梅县| 仁怀市| 铜山县| 滦南县| 萨嘎县| 桃园县| 确山县| 庐江县| 民和| 南召县| 江阴市| 阿克苏市| 永州市| 电白县| 临汾市| 栖霞市|