python - 无法使用 python 请求登录网站
问题描述
我正在尝试登录网站https://app.factomos.com/connexion但这不起作用,我仍然有错误 403,我尝试使用不同的标题和不同的数据,但我真的不知道哪里有问题...
我尝试使用 MechanicalSoup 的另一种方式,但仍然返回到连接页面。
如果有人可以帮助我...谢谢您的时间:/
import requests
from bs4 import BeautifulSoup as bs
url = 'https://factomos.com'
email = 'myemail'
password = 'mypassword'
url_login = 'https://factomos.com/connexion'
headers = requests.utils.default_headers()
headers.update({
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
})
data_login = {
'appAction': 'login',
'email': email,
'password': password
}
with requests.Session() as s:
dash = s.post(url_login, headers=headers, data=data_login)
print(dash.status_code)
# MechanicalSoup
import mechanicalsoup
browser = mechanicalsoup.StatefulBrowser()
resp = browser.open("https://app.factomos.com/connexion")
browser.select_form('form[id="login-form"]')
browser["email"] = 'myemail'
browser["password"] = 'mypassword'
response = browser.submit_selected()
print("submite: ", response.status_code)
print(browser.get_current_page())
我希望仪表板页面的响应为 200,但实际响应是 403 或连接页面。
解决方案
您用于登录 ( https://factomos.com/connexion
) 的 URL 不是登录的正确端点。您可以使用浏览器的 devtools/inspect 元素面板,特别是“网络”选项卡找到这一点。
访问此面板会因浏览器而异。这是您在 Chrome中执行此操作的方法,但通常您可以通过右键单击并单击来访问它Inspect element.
从那里,我发送了一个虚假的登录尝试,我发现实际的登录端点是:
https://app.factomos.com/controllers/app-pro/login-ajax.php
发送请求后,您可以查看有关它的详细信息。收到回复后,您也可以看到这些详细信息。以下是请求详情:
这是我发送的表单数据:
和回应:
{"error":{"code":-1,"message":"Identifiant ou mot de passe incorrect"}}
推荐阅读
- algorithm - 这个嵌套 for 循环的运行时间是多少?
- php - 使用 PHP 的多语言网站无法在实时服务器上运行,只有 Vagrant
- python - 类默认输出值
- javascript - 即使在重新加载角度 6 时也能在所有组件中维护对象实例的最佳方式
- amazon-web-services - AWS C9 - 您的环境已用完配额。请腾出一些空间
- angularjs - AngularJS图像未显示在屏幕上
- java - Visual Studio Code 可以增量编译 Java Web 应用项目吗?
- input - 跟踪简单输入字段的简单方法?
- php - Laravel 在 Storage 中找不到 PDF 文件
- oracle - 在 oracle 中动态填充变量值