2012-09-12 183 views
4

我试图使用请求下载一些文档,但该页面将我重定向到屏幕上的用户日志,因此下载了HTML页面。身份验证和python请求

我试着这样做:

c=requests.get(url,auth=HTTPBasicAuth('user','pass')) 

但我没有得到验证。

我也试过香草和文摘。

窗体本身看起来是这样的:

<input id="username" name="username" class="required" tabindex="1" type="text" value="" size="25" autocomplete="false"/> 
<br/> 

<label for="password">Password</label> 
<input id="password" name="password" class="required" tabindex="2" type="password" value="" size="25" autocomplete="off"/> 

我需要在作为有效载荷的一部分的用户名和密码来传递?如果是这样,我该怎么做?到目前为止,我尝试了几种不同的方法。

+0

是基本身份验证,你得到一个浏览器弹出一个要求输入用户名和密码,或者是用文本框,要求用户名和密码,定期页? –

+0

@ samy.vilar我相信基本身份验证。我尝试下载一个文档,然后用一个简单的表单重定向到另一个页面(部分显示在上面) –

回答

5

基本上,它必须处理从页面中获取身份验证ID并传递cookie。

这基本上就是我所做的:

from bs4 import BeautifulSoup as bs 
import requests 
s = requests.session() 
url = r'url_i_care_about' 

def authenticate(s, url): 
    headers = {'username': 'myuser', 'password': 'mypasss', '_Id': 'submit'} 
    page=s.get(url) 
    soup=bs(page.content) 
    value=soup.form.find_all('input')[2]['value'] 
    headers.update({'value_name':value}) 
    auth = s.post(url, params=headers, cookies=page.cookies)