我想从https://creis.fang.com/
获取数据。
但是,我需要先登录页面。
我需要填写4个值。
我尝试使用requests
,但失败了。
这是我的代码:
import requests
url = 'https://creis.fang.com/'
s = requests.Session()
data ={'cnname': 'myname', 'cnotp':'abc', 'cntempcode':'123', 'cnproducttitle':'企业版'}
r = s.post(url=url, data=data)
你能帮我吗?
谢谢。
答案 0 :(得分:2)
首先,登录请求和您拥有的代码不同。
使用RSA对发送的密码进行加密。我不确定它是否在每个请求上都已更改,或者加密逻辑是否固定。因此,您需要确保发送的密码已加密
import requests
url = 'https://creis.fang.com/'
s = requests.Session()
s.get(url)
data = {
"sloginID": "test",
"sPassword": "8dfddc7151749b91cedc965dec30295f34f5ab3f46679d3fa8c8d917474d162c63adcc6c9c0ea42f4cfc3fdf06bf98e4a9225f6fb8690874a028f17f2f01726259b4a32fc49e3e287a7832b6799916531603d06763b8309ca144f8c6828a9273bd4612d6b759193ee69c3608e3072f914e9af05ab2ea4bf1ab12816995f51711",
"sHID":"",
"sTempCode":"",
"product": "sfangdata",
"rsakey":"",
"l": "cn"
}
res = s.post("https://creis.fang.com/login/login/?r=0.6500200817926693", data=data)
print (res.json())
在那之后,我得到了错误
{'code': 'error', 'msg': '登录器权限已过期!', 'product': 'sfangdata', 'other': 'login'}
这是因为我没有正确的凭据
答案 1 :(得分:1)
在这种情况下,浏览器发送请求之前,先使用javascript对密码进行加密。
在这一点上,我建议使用https://selenium-python.readthedocs.io/之类的东西代替请求。
那样,您将不必对事物的javascript部分进行反向工程,并且能够轻松登录。
如果随后需要处理请求,则可以尝试检索selenium生成的cookie并继续处理请求,但是我建议将selenium用于所有内容。