Usando Cookiejar em Python para fazer login em um site no "Google App Engine". O que há de errado aqui?
-
24-09-2019 - |
Pergunta
Eu tenho tentado encontrar um código python que efetuaria login na minha caixa de e -mail no yahoo.com de "Google App Engine" . Aqui (clique aqui para ver essa página) Recebi este código:
import urllib, urllib2, cookielib
url = "https://login.yahoo.com/config/login?"
form_data = {'login' : 'my-login-here', 'passwd' : 'my-password-here'}
jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
form_data = urllib.urlencode(form_data)
# data returned from this pages contains redirection
resp = opener.open(url, form_data)
# yahoo redirects to http://my.yahoo.com, so lets go there instead
resp = opener.open('http://mail.yahoo.com')
print resp.read()
O autor deste script analisou o script html de Formulário de login do Yahooe criou este script.
Esse formulário de login contém dois campos, um para os usuários do Yahoo! ID e outro é para a senha dos usuários. Aqui está como se parece o código HTML dessa página para ambos os campos:
Campo de ID de usuário:
<input type="text" maxlength="96" class="yreg_ipt" size="17" value="" id="username" name="login">
Campo de senha:
<input type="password" maxlength="64" class="yreg_ipt" size="17" value="" id="passwd" name="passwd">
No entanto, quando enviei esse código para o Google App Engine, descobri que esse formulário de login continua voltando para mim, o que, presumo, significa que o processo de login não teve sucesso. Por que é tão?
Solução
Você envia hash md5 e não senha simples. Além disso, você teria que jogar junto com todos os tipos de proteções de CSRF etc. que estão implementando. Olhar:
<input type="hidden" name=".tries" value="1">
<input type="hidden" name=".src" value="ym">
<input type="hidden" name=".md5" value="">
<input type="hidden" name=".hash" value="">
<input type="hidden" name=".js" value="">
<input type="hidden" name=".last" value="">
<input type="hidden" name="promo" value="">
<input type="hidden" name=".intl" value="us">
<input type="hidden" name=".bypass" value="">
<input type="hidden" name=".partner" value="">
<input type="hidden" name=".u" value="bd5tdpd5rf2pg">
<input type="hidden" name=".v" value="0">
<input type="hidden" name=".challenge" value="5qUiIPGVFzRZ2BHhvtdGXoehfiOj">
<input type="hidden" name=".yplus" value="">
<input type="hidden" name=".emailCode" value="">
<input type="hidden" name="pkg" value="">
<input type="hidden" name="stepid" value="">
<input type="hidden" name=".ev" value="">
<input type="hidden" name="hasMsgr" value="0">
<input type="hidden" name=".chkP" value="Y">
<input type="hidden" name=".done" value="http://mail.yahoo.com">
<input type="hidden" name=".pd" value="ym_ver=0&c=&ivt=&sg=">
Inicie o Wireshark e brinque com ele. Boa sorte :)
No entanto, se você pretende usá -lo com mecanismo de aplicativo, mantenha em minha opinião que o uso do Google IP quase certamente resultará em Captcha Challenge. Além disso, o Yahoo pode bloquear seu User-Agent
Isso está sendo definido permanentemente pelo Google.