爬虫逆向实战(41)-某花顺登陆(Cookie、MDSHA256)
import requests
import execjs
def get_sign(username, password, timestamp):
with open('sign.js', 'r', encoding='utf-8') as f:
sign_js = f.read()
ctx = execjs.compile(sign_js)
sign = ctx.call('getSign', username, password, timestamp)
return sign
def login(username, password, timestamp):
url = 'https://flower-shopping.ichong.com/user/login'
headers = {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
'Origin': 'https://flower-shopping.ichong.com',
'Referer': 'https://flower-shopping.ichong.com/',
}
data = {
'username': username,
'password': password,
'timestamp': timestamp,
'sign': get_sign(username, password, timestamp),
}
response = requests.post(url, headers=headers, data=data)
print(response.text)
if __name__ == '__main__':
username = 'your_username'
password = 'your_password'
timestamp = '20201010101010' # 示例时间戳,实际应该是当前时间
login(username, password, timestamp)
这段代码使用了execjs
库来运行JavaScript代码以获取签名。首先,它定义了一个get_sign
函数,该函数读取本地的sign.js
文件内容,并使用execjs编译和调用该JavaScript函数来获取签名。然后,定义了一个login
函数,它构建了请求头和请求数据,其中包括用户名、密码、时间戳和签名,然后发送POST请求进行登录。最后,在__name__ == '__main__'
块中调用login
函数进行登录。
注意:在实际使用中,需要替换示例代码中的your_username
和your_password
为实际的用户名和密码,并确保timestamp
是动态生成的。
评论已关闭