2010-04-03 6 views
0

yahoo.com의 내 메일 상자에 로그인 할 파이썬 코드를 찾으려고했습니다. "Google App Engine" . Here (click here to see that page)는 나는이 코드를 주어졌다 :이 스크립트의Python에서 CookieJar를 사용하여 "Google App Engine"의 웹 사이트에 로그인하십시오. 여기 뭐가 잘못 됐니?

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() 

저자는 yahoo log-in form 의 HTML 스크립트를 바라 보 고이 스크립트를 내놓았다.

해당 로그인 양식에는 사용자의 Yahoo! ID와 다른 하나는 사용자의 비밀번호입니다. 여기에 해당 필드의 모두에 해당 페이지의 HTML 코드는 모습입니다 같은 :

사용자 ID 필드 :

<input type="text" maxlength="96" class="yreg_ipt" size="17" value="" id="username" name="login"> 

암호 필드 : 그러나

<input type="password" maxlength="64" class="yreg_ipt" size="17" value="" id="passwd" name="passwd"> 

, 나는 Google에이 코드를 업로드하는 경우 App Engine이 로그인 양식이 계속 나에게 돌아 오는 것을 발견했는데 로그인 절차가 성공하지 못했다는 것을 의미합니다. 왜 그래야만하지?

답변

3

일반 암호가 아닌 MD5 해시를 보냅니다. 또한 CSRF 보호 기능을 구현하는 모든 종류의 기능을 수행해야합니다. 모양 :

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

Wireshark를 시작하고 함께 게임하십시오. 행운을 빌어 요.

Google App를 사용하면 Google IP를 사용하면 Captcha의 도전 과제가 거의 생길 것입니다. 또한 야후가 귀하의 User-Agent을 (를) 영구적으로 차단할 수도 있습니다.

+0

감사합니다, deno,이 입력 내용입니다. 솔직히 말해서, 나는 당신의 대답에 상당히 압도되어 있습니다 - 나는 많은 것들이 포함될 것이라는 것을 정말로 알지 못했습니다. 이미 Wireshark를 다운로드했으며 지금은 Wireshark를 연구하려고합니다. MD5 해시로 평범한 암호를 변환하는 법을 가르쳐 주시겠습니까 (아니면 저에게 가르쳐 줄 자원을 가르쳐 주시겠습니까? 또한 여기에서 제공 한 이러한 코드 줄을 내 코드에 삽입 할 수 있습니까? 그렇다면 내 코드에서 어디에서 삽입합니까? 다시 한번 감사드립니다. – brilliant

+1

파이썬을 사용하고 있다면 hashlib 문서 (http://docs.python.org/library/hashlib.html)를 살펴보십시오. 당신이 뭘 원하는지 : 1. 정상 로그인을 시뮬레이션하고 얻을 로그인 페이지를 저장 2. POST 및 GET 헤더를 w/wireshark로 저장하십시오. 3. 해당 헤더가있는 로그인 페이지를 비교하고 w를 포함해야하는 필드를 확인하십시오/당신의 요청. 그럴 수 있습니다. 친구가 제안한대로 로그인 페이지는 보통 로그인 + 비밀번호입니다. 그러나이 모든 추가 데이터는 안전하지 않습니다. 그러나 HTTP ← → IMAP 프록시를 설정하는 것보다 전자 메일을 읽는 것이 더 간편 할 수도 있습니다. – deno

+0

나는 본다 !!! 감사합니다, deno, 대단히 감사합니다! – brilliant