簡體   English   中英

嘗試通過請求登錄網站

[英]Trying to log in to a website with requests

這是網站: https : //nacionalidade.justica.gov.pt/

如您所見,有一個輸入類。 如何使用將發送到輸入類的參數向站點發送請求?

輸入密碼后,頁面發生變化,如何獲取新頁面的內容?

這是我需要向其發送信息的課程

這是我需要將密碼發送到的班級。

import requests
from lxml import html

payload = {'password' : 'mypassword... not gonna write it here',
       'ABE4A1723D5F2906F222936AD0E9BE0E' : 
       'ABE4A1723D5F2906F222936AD0E9BE0E'}
url = "https://nacionalidade.justica.gov.pt/"

session_requests = requests.session()
result = session_requests.get(url)

tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='ABE4A1723D5F2906F222936AD0E9BE0E']/@value")))[0]

result = session_requests.post(
    url, 
    data = payload, 
    headers = dict(referer=url)
)

r =requests.get(url,headers= dict(referer = url))
tree = html.fromstring(result.content)
bucket_names = tree.xpath("//div[@class='repo-list--repo']/a/text()")

print(bucket_names)

我收到一個索引錯誤,我不知道為什么

Traceback (most recent call last):
File "c:/Users/?/Desktop/?/?/new.py", line 12, in <module>

authenticity_token = list(set(tree.xpath("//input[@name='ABE4A1723D5F2906F222936AD0E9BE0E']/@value")))[0]
IndexError: list index out of range

這是一個示例“如何以正確的方式進行操作”,但沒有您的密碼等。所以請隨意采用它作為您的解決方案。

from lxml.html import fromstring
import requests

session = requests.Session()

html = session.get('https://nacionalidade.justica.gov.pt/').content
form = fromstring(html).xpath('//form')[0]

post = {}
for input in form.inputs:
    if not input.name:
        continue

    post[input.name] = input.value

print('Initial form data')
print(post)

response = session.post('https://nacionalidade.justica.gov.pt/Home/GetEstadoProcessoAjax', data=post)
print(response.text)

輸出

Initial form data
{'__RequestVerificationToken': 'p3AmUxqx-6Ipv9EbujoUid5TAKTm76oVmYIaB2UZMv_QzcH7LXaYhGwcQcqXqjWlJjJyvcKgcX48brUkWNvrmz-q3MPlg8mZAm56EGUooYw1', 'SenhaAcesso': '', 'DD94BAEBEF20FBD64FF8CA12170D623D': None, 'Email': None}
<link href="/layout/assets/css/grafico_nacionalidade.css" rel="stylesheet" />
<style>
    .titulo {
        color: #3399cc;
    }

    /*Bloco para o estado do processo*/
    #block_container {
        font-size: 1.5rem;
        font-weight: bold;
    }
    #bloc1
    {
        display:inline;
    }
    #bloc2
    {
        display:inline;
        font-size:1rem;
        font-weight:normal;
    }

    /*-------------------------------------*/

</style>
<div>


        <div id="txtErro" style="background-color:#FBEDED; width:100%; ">
            <div style="padding:35px;">
                A senha <b></b> n&#227;o corresponde a nenhum processo de nacionalidade ativo.
                <p></p>
                <br />
                Verifique que digitou a sua senha corretamente.
                <p></p>
                <br />
                Caso n&#227;o encontre o seu processo dirija-se &#224; <a href="http://www.irn.mj.pt/IRN/sections/irn/contactos">conservat&#243;ria</a> onde entregou o seu pedido.

                Na <a href="http://www.irn.mj.pt/IRN/sections/irn/contactos">Conservatória dos Registos Centrais</a>, em Lisboa, sem marcação prévia é possível obter a sua senha de acesso.
            </div>
        </div>


</div>
<hr />
<p>
    <a href="/Home/PesquisaProcesso">Voltar</a>
</p>

重要的:

  1. 您必須對所有請求使用一個請求會話對象,因為有激活 CSRF 令牌功能的 cookie 會話。

  2. 您必須發送所有初始表單數據 + 您的密碼或安全號碼字段

  3. 也許您必須發送一些額外的 HTTP 標頭來獲取響應,因為它是一個 AJAX 請求(我相信)。

看起來沒有這個名字的輸入。 看看是否可以使用更穩定的選擇器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM