2013-11-26 172 views
0

我想用我的用户名和密码登录网站,但我似乎无法得到它的工作。现在我正在使用该网站进行测试。如果我能够登录,我应该能够找到说SnowBomb白金会员资格的位。如果我无法登录,我应该在源代码中找到lost_password文本。用python登录网站

这是我有:

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:'字典'对象不可调用' – Liondancer

+0

'如果'在request.content'中的SnowBome白金会员':是你在问题中提出的错字,还是你检查你的代码中有错误的字符串? –

回答

1

每当有一个成功登录后,网站将饼干在浏览器中。我们需要发送这些cookie以及所有其他请求,只有当网站每次都会识别您。

您可以使用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,具体取决于用户是否登录 – Liondancer

+0

几乎所有网站都具有相同的URL,但登录和访客用户的视图不同。但是你确定,发布登录请求的网址是一样的吗?如果它没有问题,你能给我的网站链接吗? – Sudipta

+0

'http:// www.snowbomb.com/my-account-2' html会根据用户是否登录而改变 – Liondancer