Pythonアナログ登録網易雲音楽は自動的に署名します。


一、開発ツール
*Python****バージョン:*3.6.4
関連モジュール:
Decrypt Loginモジュール;
argparseモジュール;
いくつかのPythonのモジュールを持っています。
二、環境構築
Pythonをインストールして環境変数に追加し、pipに必要な関連モジュールをインストールすればいいです。
三、原理紹介
サインするなら、まず、もちろんアナログ登録が必要です。ここではやはり簡単に私達のソースのDecrypt Loginライブラリを利用して網易クラウド音楽のアナログ登録を実現します。

'''    '''
@staticmethod
def login(username, password):
  lg = login.Login()
  _, session = lg.music163(username, password)
  return session
ログインに成功したら、どうやって網易雲音楽の自動署名を実現するかを分析します。開発者ツールまたはマウスの右ボタンを押して検出し、網易雲音楽の署名ボタンをクリックしてください。

署名の疑いのあるポスト要求が見つかります。
图片
そのリンクは以下のように構成されています。

'https://music.163.com/weapi/point/dailyTask?csrf_token=' + csrf
前の文章でcsrfというパラメータは登録後のcookiesで見つけられると言いました。

csrf = re.findall('__csrf=(.*?) for', str(session.cookies))[0]
したがって、私たちが今解決したい問題はどのようにしてそのポストの提出が必要なdataの原文を見つけますか?ホームページで見た内容は暗号化されたものですので、このようにしてください。
图片
图片
第一は明らかに私達がインターフェースにサインするのを見つけました。それでは第二をつけてみましょう。
图片
queryは私たちが欲しい原文ではないでしょう。試して成功すれば、血で儲けるのではないですか?そこで、Decrypt Loginライブラリに書いた網易クラウド音楽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パスワード
image.png
ここでは、Pythoonアナログ登録網易雲音楽についての文章を紹介します。これに関連して、Pythoonのアナログ登録と署名の内容を紹介します。以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。