Estou tentando postar uma solicitação para fazer login em um site usando o módulo Requests em Python, mas realmente não está funcionando. Sou novo nisso ... então não consigo descobrir se devo criar meus cookies de nome de usuário e senha ou algum tipo de autorização de HTTP que encontrei (??).
from pyquery import PyQuery
import requests
url = 'http://www.locationary.com/home/index2.jsp'
Agora, acho que devo usar "post" e cookies ....
ck = {'inUserName': 'USERNAME/EMAIL', 'inUserPass': 'PASSWORD'}
r = requests.post(url, cookies=ck)
content = r.text
q = PyQuery(content)
title = q("title").text()
print title
Tenho a sensação de que estou fazendo a coisa dos cookies errada ... não sei.
Se não fizer login corretamente, o título da página inicial deve ser "Locationary.com" e, se for, deve ser "Página inicial".
Se você pudesse explicar algumas coisas sobre pedidos e cookies para mim e me ajudar com isso, eu agradeceria muito. : D
Obrigado.
... Ainda não funcionou realmente. Ok ... então isso é o que o HTML da página inicial diz antes de você fazer login:
</td><td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_email.gif"> </td>
<td><input class="Data_Entry_Field_Login" type="text" name="inUserName" id="inUserName" size="25"></td>
<td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_password.gif"> </td>
<td><input class="Data_Entry_Field_Login" type="password" name="inUserPass" id="inUserPass"></td>
Acho que estou fazendo certo, mas o resultado ainda é "Locationary.com"
2ª EDIT:
Quero poder permanecer conectado por muito tempo e sempre que solicitar uma página nesse domínio, quero que o conteúdo apareça como se eu estivesse conectado.
fonte
Sei que você encontrou outra solução, mas para quem como eu encontra essa dúvida, procurando a mesma coisa, ela pode ser conseguida com as seguintes solicitações:
Em primeiro lugar, como fez Marcus, verifique a origem do formulário de login para obter três informações - a url para a qual o formulário envia e os atributos de nome dos campos de nome de usuário e senha. Em seu exemplo, eles são inUserName e inUserPass.
Depois de fazer isso, você pode usar uma
requests.Session()
instância para fazer uma solicitação de postagem para o url de login com seus detalhes de login como uma carga útil. Fazer solicitações de uma instância de sessão é essencialmente o mesmo que usar solicitações normalmente; simplesmente adiciona persistência, permitindo que você armazene e use cookies etc.Supondo que sua tentativa de login foi bem-sucedida, você pode simplesmente usar a instância da sessão para fazer outras solicitações ao site. O cookie que o identifica será usado para autorizar as solicitações.
Exemplo
fonte
p = s.post('LOGIN_URL.....
e entãop.text
Deixe-me tentar simplificar, suponha que o URL do site seja http://example.com/ e suponha que você precise se inscrever preenchendo o nome de usuário e a senha, então vamos para a página de login dizer http: // example. com / login.php agora e veja o seu código-fonte e pesquise o URL de ação que estará na tag de formulário algo como
agora pegue userinfo.php para fazer um URL absoluto que será ' http://example.com/userinfo.php ', agora execute um script python simples
Espero que algum dia isso ajude alguém em algum lugar.
fonte
webbrowser
móduloprint r.content
está errado, ele deveria estar usandoprint(r.content)
Descubra o nome das entradas usadas no formulário dos sites para nomes de usuários
<...name=username.../>
e senhas<...name=password../>
e substitua-os no script abaixo. Substitua também o URL para apontar para o site desejado para fazer login.login.py
O uso de
disable_warnings(InsecureRequestWarning)
silenciará qualquer saída do script ao tentar fazer login em sites com certificados SSL não verificados.Extra:
Para executar este script a partir da linha de comando em um sistema baseado em UNIX, coloque-o em um diretório, ou seja,
home/scripts
adicione este diretório ao seu caminho~/.bash_profile
ou a um arquivo semelhante usado pelo terminal.Em seguida, crie um link para este script python dentro
home/scripts/login.py
Feche seu terminal, inicie um novo, execute
login
fonte
A
requests.Session()
solução ajudou no login em um formulário com CSRF Protection (conforme usado nos formulários Flask-WTF). Verifique se umcsrf_token
é obrigatório como um campo oculto e adicione-o à carga com o nome de usuário e a senha:fonte