2012-09-12 5 views
4

요청을 사용하여 일부 문서를 다운로드하려고하지만 페이지가 사용자 페이지로 리디렉션되어 HTML 페이지를 다운로드합니다. 내가 뭘 해봤인증 및 파이썬 요청

:

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를 가져 와서 쿠키를 전달해야합니다.

이것은 내가 무슨 짓을 기본적으로 :

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)