python - 无法使用 python 请求登录网站

标签 python authentication web request

我正在尝试登录网站 https://app.factomos.com/connexion但这不起作用,我仍然有错误 403,我尝试使用不同的 header 和不同的数据,但我真的不知道问题出在哪里......

我尝试使用 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 或连接页面。

最佳答案

您用于登录的 URL (https://factomos.com/connexion) 不是正确的登录端点。您可以使用浏览器的 devtools/inspect 元素面板找到这一点,特别是“网络”选项卡。

访问此面板会因浏览器而异。 Here's how you do it in Chrome ,但一般来说,您可以通过右键单击并单击检查元素来访问它。

从那里,我发送了一个虚假的登录尝试,我发现实际的登录端点是:

https://app.factomos.com/controllers/app-pro/login-ajax.php

发送请求后,您可以查看有关该请求的详细信息。收到回复后,您也可以看到这些详细信息。以下是请求详细信息:

request details headers

这是我发送的表单数据:

fake form data

响应:

{"error":{"code":-1,"message":"Identifiant ou mot de passe incorrect"}}

关于python - 无法使用 python 请求登录网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57272639/

相关文章:

python - 如何计算 ndarray 中某个项目的出现次数?

python - 我可以使用默认字节而不是 Unicode 的 Python 3 吗?

php - 将数据库中的字段与php中的整数进行比较

node.js - 检查客户端发送的 jwt 和参数是否相等是否太过分了?

java - 通过 Web 服务将 .NET 应用程序与 Java/J2EE 应用程序集成

R直接从网络导入excel文件

html - 内容未在 IE 中显示

python - 从不同的大文件中打乱数据的有效方法

python - k 组反向链表的迭代解决方案

php - 如何在 Yii 中创建具有两个用户级别的登录模块