繁体   English   中英

如何在 Python 中使用请求登录?

[英]How to login using requests in Python?

我想从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)

你能帮助我吗?

谢谢。

在此处输入图片说明

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

首先,登录请求和你拥有的代码是不同的。

发送的密码使用 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'}

这是因为我没有正确的凭据

在这种情况下,在浏览器发送请求之前,密码在 javascript 中加密。

在这一点上,我建议使用类似https://selenium-python.readthedocs.io/ 的内容而不是请求。

这样您就不必对事物的 javascript 部分进行逆向工程,并且能够轻松登录。

如果您随后需要继续处理请求,您可以尝试检索 selenium 生成的 cookie 并继续处理请求,但我建议对所有内容都使用 selenium。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM