Python脚本实现虾米网签到功能
简介
虾米网是一款流行的音乐网站,用户可以在虾米网上听音乐、发现音乐、交流音乐。虾米网每日有签到功能,用户可以通过签到获取积分,积分可以用于兑换虾米网的一些礼品。
本文主要介绍使用Python脚本实现虾米网签到功能的方法,以及如何在脚本中模拟用户登录,实现自动签到。
实现步骤
1. 获取登录页面的cookie和code
在进行用户登录前需要获取登录页面的cookie和code,具体请求的url为https://passport.xiami.com/?_q=%7B%22from%22:%22https://www.xiami.com/%22,%22referer%22:%22http://www.xiami.com/%22%7D。该url会返回一个html页面,在该页面中有一段js代码,其中包含了名为lg_token的cookie和名为_xiamitoken的code值。获取这些值的方法为使用requests库向该url发送GET请求,代码示例如下:
import requests
url_1 = "https://passport.xiami.com/?_q=%7B%22from%22:%22https://www.xiami.com/%22,%22referer%22:%22http://www.xiami.com/%22%7D"
response_1 = requests.get(url_1)
cookie = response_1.cookies.get('lg_token')
code = response_1.text.split('value: "')[1].split('"')[0]
print(cookie, code)
运行上述代码,即可获取cookie和code值。
2. 模拟登录并获取签到所需token值
获取到cookie和code后,接下来需要模拟用户进行登录,并获取签到所需的token值。登录虾米网需要使用POST方法,同时需要在请求header中添加“x-requested-with”参数,其中的值为“XMLHttpRequest”以模拟ajax请求。登录虾米网后会返回一个名为"_m_h5_tk"的cookie值,该cookie值用于后续签到请求的token认证。获取该cookie值的方法为在请求header中添加“referer”参数,值为虾米网登录页面的url,还需在payload中添加用户名和密码,代码示例如下:
import requests
from hashlib import md5
import time
url_login = "https://passport.xiami.com/login"
username = "YOUR_USERNAME" # 虾米网的用户名
password = "YOUR_PASSWORD" # 虾米网的密码
payload = {"account": username, "password": md5(password.encode("utf8")).hexdigest(), "remember": "true",
"_xiamitoken": code}
header_login = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) chrome/58.0.3029.110 Safari/537.36',
'Host': 'passport.xiami.com', 'Referer': 'https://passport.xiami.com/login',
'Origin': 'https://passport.xiami.com', 'x-requested-with': 'XMLHttpRequest'}
response_2 = requests.post(url_login, data=payload, headers=header_login)
cookie_m_h5_tk = response_2.cookies.get("_m_h5_tk").split("_")[0]
print(cookie_m_h5_tk)
运行上述代码,即可获取cookie_m_h5_tk值。
3. 签到
获取到cookie_m_h5_tk值后,就可以进行签到了。签到需要向https://www.xiami.com/task/signin/ajax?_q=%7B%22xf%22:%22pcweb%22,%22_rt%22:%22b%22%7D发送POST请求,其中需在请求header中添加"Referer"参数,值为"https://www.xiami.com/",还需添加cookie_m_h5_tk参数,代码示例如下:
import requests
url_sign = "https://www.xiami.com/task/signin/ajax?_q=%7B%22xf%22:%22pcweb%22,%22_rt%22:%22b%22%7D"
header_sign = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) chrome/58.0.3029.110 Safari/537.36',
'Host': 'www.xiami.com', 'Referer': 'https://www.xiami.com/',
'Origin': 'https://www.xiami.com', 'X-Requested-With': 'XMLHttpRequest',
'cookie': '_m_h5_tk=' + cookie_m_h5_tk}
response_3 = requests.post(url_sign, headers=header_sign)
print(response_3.json())
运行上述代码即可完成签到并查看签到结果。
总结
本文介绍了使用Python脚本实现虾米网签到功能的方法,其中包含获取登录页面的cookie和code、模拟登录并获取签到所需token值、签到三个步骤。通过本文介绍的方法,用户可以方便快捷地进行虾米网的自动签到。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python脚本实现虾米网签到功能 - Python技术站