爬虫逆向实战(41)-某花顺登陆(Cookie、MDSHA256)
    		       		warning:
    		            这篇文章距离上次修改已过448天,其中的内容可能已经有所变动。
    		        
        		                
                
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是动态生成的。
评论已关闭