2013-01-20 3 views
1

파이썬 작업을 얻고이 값에 로그인하는 사람이 도와 줄 수 있습니까?파이썬을 사용하여 웹 사이트에 로그인하는 방법

<div class='field'> 
    <label for='login'>Login</label><br/> 
    <input id='login' name='login' size='16' type='text' /> 
</div> 
<div class='field'> 
    <label for='login_password'>Password</label><br/> 
    <input id='login' name='password' size='16' type='password' /> 
</div> 
<div class='field'> 
    <input type='submit' value='Login' /> 
</div> 

이하 나는 당신은 신속하게 이야기하는 데 필요한 소스에서 HTML 견적의 비트를 놓친이 코드

import sys,os,time,subprocess,threading,readline,fileinput, urllib, urllib2, cookielib 
usernameInsnort = '' 
passwordInsnort = '' 
print 'can you pleasse insert your snort user name:' 
usernameStr = raw_input(usernameInsnort) 
print 'can you please insert your snort password:' 
passwordStr = raw_input(passwordInsnort) 
cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
login_data = urllib.urlencode({'login' : usernameStr, 'login' : passwordStr}) 
opener.open('https://www.snort.org/login', login_data) 
resp = opener.open ('https://www.snort.org/downloads/2142') 
print resp.read() 

감사

+3

urllib2는 끔찍합니다. 훨씬 더 나은 API가있는 [요청] (http://docs.python-requests.org/)을 사용해보십시오. – ThiefMaster

답변

0

를 만회를 시도 피곤 해요 귀하의 방법이 작동하지 않는 이유

<form action="https://www.snort.org/session" 
    method="post"> 
    <input name="authenticity_token" 
     type="hidden" value="y4xmS1IJatlRmkFz4GT4OrBuE57cBCtHj0ka0UPg9sw=" /> 
    <fieldset> 
     [Snip - You already provided this bit] 
    </fieldset> 
</form> 

이 HTML에서 우리는 두 개의 issu ES

  • /session에 양식을 게시하지 /login
  • 에는 사용자 세션이 설정되어 있지 않은 탓인지, 문제가 될 것 같지 않습니다 크로스 사이트 요청 위조 (CSRF) 을 방지하기 위해 authenticity_token 필드가 있습니다 아직 원래 Paython 코드에서

당신은 통지이 라인을 제공

0 이

그래서 계정으로 모든 것을 가지고 우리는 당신의 코드가 작동 할 수 있습니다 로그인 인코딩되어 있기 때문에 또 다른 문제가

  • 확인하는는

    당신은 암호 값을 인코딩하지 약간 변경하여

    import sys,os,time,subprocess,threading,readline,fileinput, urllib, urllib2, cookielib 
    usernameInsnort = '' 
    passwordInsnort = '' 
    print 'can you pleasse insert your snort user name:' 
    usernameStr = raw_input(usernameInsnort) 
    print 'can you please insert your snort password:' 
    passwordStr = raw_input(passwordInsnort) 
    cj = cookielib.CookieJar() 
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
    
    # Changed the second dictionary item to password instead of login 
    login_data = urllib.urlencode({'login' : usernameStr, 'password' : passwordStr}) 
    
    # Changed the URL opened to that the login form submits to 
    opener.open('https://www.snort.org/session', login_data) 
    
    resp = opener.open ('https://www.snort.org/downloads/2142') 
    print resp.read() 
    
관련 문제