2013-11-26 7 views
0

나는 내 사용자 이름과 암호로 웹 사이트에 로그인하려고 시도하고 있지만 제대로 작동하지 않는 것 같습니다. 지금은 웹 사이트를 사용하여 테스트하고 있습니다. 로그인 할 수 있다면 SnowBomb Platinum Membership이라는 비트를 찾을 수 있습니다. 로그인 할 수없는 경우 소스 코드에서 lost_password 텍스트를 찾아야합니다. 여기 파이썬으로 웹 사이트에 로그인

info = { 
    'USERNAME' : 'username', 
    'PASSWORD' : 'password', 
    #'submit' : 'login' don't know if i need this 
} 

def main(): 
    r = requests.post('http://www.snowbomb.com/my-account-2', data = info) #logged in 
    request = requests.get('http://www.snowbomb.com/my-account-2') 
    if 'lost_password' in request.content: 
     print 'Was not able to log in' 
     print 'lost_password' in request.content 
    else: 
     if 'The SnowBomb Platinum Membership' in request.content: 
      print 'Logged in' 
      print 'The SnowBomb Platinum Membership' in request.content #--> when it works 

if __name__ == '__main__': 
    main() 

에 로그인하는 사용자를 요청하는 소스 코드의 형태 :

내가 무엇을 가지고 성공적으로 로그인을있을 때마다

<form method="post" class="login"> 
      <p class="form-row form-row-first"> 
       <label for="username">Username <span class="required">*</span></label> 
       <input type="text" class="input-text" name="username" id="username" /> 
      </p> 
      <p class="form-row form-row-last"> 
       <label for="password">Password <span class="required">*</span></label> 
       <input class="input-text" type="password" name="password" id="password" /> 
      </p> 
      <div class="clear"></div> 

      <p class="form-row"> 
       <input type="hidden" id="_n" name="_n" value="a046c51363" /><input type="hidden" name="_wp_http_referer" value="/my-account-2/" /><input type="hidden" name="redirect" value="http://www.snowbomb.com/my-account"/> 
       <input type="submit" class="button" name="login" value="Login" /> 
       <a class="lost_password" href="http://www.snowbomb.com/wp-login.php?action=lostpassword&#038;redirect_to=http://www.snowbomb.com">Lost Password?</a> 
      </p> 
     </form> 
+0

:'R = requests.post ('http://www.snowbomb.com/my-account-2', 데이터 = 정보) 요청 = requests.get ('HTTP : //www.snowbomb.com/my-account-2 ')', 이것을 사용하십시오 :'request = requests.get ('http://www.snowbomb.com/my-account-2 ', auth = info) ' –

+0

@ZeinabAbbasi 'TypeError :'dict '객체가 호출 가능하지 않습니다.' – Liondancer

+0

' ''SnowBome Platinum Membership 'in request.content' : 질문에 그냥 입력했거나 확인하고 있습니다. 코드에서 잘못된 문자열? –

답변

1

, 웹 사이트는 쿠키를 설정 브라우저에서 추가 요청이있을 때마다이 쿠키를 보내야하며 그때 만 웹 사이트가 매번 사용자를 인식합니다.

urllib, urllib2cookielib을 사용하면됩니다. requestssessions을 사용하여 동일하게 수행 할 수도 있습니다. 대신이 두 라인의

import requests 

s = requests.session() 
url = "http://www.snowbomb.com/my-account-2" 
login_request = s.post(url, data=payload) 
print login_request.text 
logged_in_request = c.get(url) 
print logged_in_request.text 
+0

로그인 URL과 보호 된 URL이 같으면 여전히 작동합니까? 내가 다루고있는 웹 사이트는 사용자가 로그인했는지 여부에 따라 같은 URL을 가진 두 가지 다른보기를 가지고 있습니다. – Liondancer

+0

거의 모든 웹 사이트는 로그인했지만 게스트 사용자와 다른 URL을 가지고 있습니다. 하지만 로그인 요청이 게시 된 URL이 같은지 확인하십시오. 문제가 아니라면 웹 사이트 링크를 줄 수 있습니까? – Sudipta

+0

'http : // www.snowbomb.com/my-account-2' 사용자가 로그인했는지 여부에 따라 html이 바뀔 것입니다. – Liondancer

관련 문제