无法使用python请求登录网站

时间:2019-07-30 13:15:31

标签: python authentication web request

我正在尝试登录网站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或连接页面。

1 个答案:

答案 0 :(得分:0)

您用于登录的URL(https://factomos.com/connexion)不是正确的登录端点。您可以使用浏览器的devtools / inspect元素面板(尤其是“网络”标签)找到该URL。

访问此面板的方法因浏览器而异。 Here's how you do it in Chrome,但是通常您可以通过右键单击并单击Inspect element.

来访问它

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

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"}}