首页 > 解决方案 > 无法使用 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 或连接页面。

标签: pythonauthenticationwebrequest

解决方案


您用于登录 ( 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"}}

推荐阅读