|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 johnnyb 于 2020-8-2 17:59 编辑
JS逆向破解,实现解密登陆fang.com
爬取部分需要自己补充
附上源代码. JS代码. 注释已经尽量写全. js解密文件在附件包里.
用到了3个模块 requests pyexecjs sys
执行文件时参数1是账号 参数2是密码
如: python fang.com.py user password
爬虫新手,请多多指导!
s对象是携带这cookies的. 支持登陆后的一切请求操作.
- import requests
- import execjs
- import sys
- def getPWD(pwd):
- '''获取PWD的加密字符串'''
- with open('fang.com.js', 'r') as f:
- js_code = f.read() # 读入js代码
- results = execjs.compile(js_code).call('getpwd', pwd) # 利用execjs模块执行js代码 取得加密后的字符串
- return results
- def login_POST(user, en_pwd):
- '''登陆函数'''
- headers = {
- 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
- 'Host': 'passport.fang.com',
- 'Origin': 'https://passport.fang.com',
- 'Pragma': 'no-cache',
- 'Referer': 'https://passport.fang.com/?backurl=https%3A%2F%2Fchangchun.fang.com%2F',
- 'Sec-Fetch-Dest': 'empty',
- 'Sec-Fetch-Mode': 'cors',
- 'Sec-Fetch-Site': 'same-origin',
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',
- 'X - Requested - With': 'XMLHttpRequest'
- }
- data = {
- 'uid': user, # 用户名
- 'pwd': en_pwd, # 加密后密码
- 'Service': 'soufun-passport-web',
- 'AutoLogin': 1 # 自动登陆开关
- }
- s = requests.Session() # 创建Session对象
- url = 'https://passport.fang.com/login.api'
- try:
- '''尝试post'''
- response = s.post(url=url, headers=headers, data=data, timeout=5)
- response.raise_for_status() # 非200 抛异常
- if '账号或密码错误' not in response.text: # 从返回的json中判断结果
- print('登陆成功!')
- print('你的cookies:')
- cookie_dict = requests.utils.dict_from_cookiejar(s.cookies) # cookies转字典
- for cookie in cookie_dict.items(): # 遍历字典方便展示
- print(cookie)
- else:
- print('账号密码有误')
- except:
- print('网络异常,重试!')
- def main():
- user = sys.argv[1]
- pwd = sys.argv[2]
- en_pwd = getPWD(pwd)
- login_POST(user, en_pwd)
- if __name__ == '__main__':
- main()
复制代码
fang.com.rar
(5.01 KB, 下载次数: 0)
|
|