2017-11-18 5 views
0

대시 보드 환경에서 파일을 파이썬 스크립트로 다운로드하고 파일의 데이터를 조작하고 싶습니다. 대시 보드 환경에서는 두 번 로그인해야합니다. 먼저 기업 계정에 로그인 한 다음 개인 계정에 로그인해야합니다. 기업 계정에 로그인 할 수는 있지만 올바른 자격 증명을 제공하는 동안 내 개인 계정에 로그인하지 못할 수 있습니다.파이썬 2 단계 로그인

사용하려는 스크립트입니다. 별 사이의 물건은 개인 정보 보호를 위해 변경 :

import csv 
import requests 

URL_Login = '*baseurl of the dashboard*' 
CSV_URL = '*baseurl of the dashboard*/auto/reports/responses/?sheet=1528&item=4231&format=csv' 


with requests.Session() as s: 
    download = s.get(URL_Login, auth=("*corporate account name*", "*corporate password*")) 
    download = s.get(CSV_URL, auth=("*personal account name*", "*personal password*")) 

    decoded_content = download.content.decode('utf-8') 

    cr = csv.reader(decoded_content.splitlines(), delimiter=',') 
    my_list = list(cr) 
    for row in my_list: 
     print(row) 

나는 다음과 같은 오류 메시지가 : 401 - 권한이 없음 : 잘못된 자격 증명 때문에 액세스가 거부되었습니다. 제공 한 자격 증명을 사용하여이 디렉터리 또는 페이지를 볼 수있는 권한이 없습니다.

올바른 자격 증명을 제공하고 있음을 확신하기 때문에 다른 어떤 것도 401을 트리거 할 수 있습니까?

답변

0

첫 번째 요청을 처리 할 페이지를 제공하려면 두 번째 다운로드 문의 전에 타이머를 시도하십시오. download s.get ..., time.sleep (3)과 같이 3 초 대기 (최대 3 초가 걸리지 않으면 시행 착오로 약 7 초). 물론 가져 오기 시간.

그것은 여전히 ​​작동하지 않습니다, 그것은 당신의 request.Session()를 다시 호출 할 필요가있다, 그래서 시도 의미

import csv 
import requests 

URL_Login = '*baseurl of the dashboard*' 
CSV_URL = '*baseurl of the dashboard*/auto/reports/responses/?sheet=1528&item=4231&format=csv' 


with requests.Session() as s: 
    download = s.get(URL_Login, auth=("*corporate account name*", "*corporate password*")) 
time.sleep(3) 
with requests.Session() as t: 
    download = t.get(CSV_URL, auth=("*personal account name*", "*personal password*")) 

    decoded_content = download.content.decode('utf-8') 

    cr = csv.reader(decoded_content.splitlines(), delimiter=',') 
    my_list = list(cr) 
    for row in my_list: 
     print(row) 

... 세 번째 개입이, 두 번째 중 하나가 작동하지 않는 경우, 원래 코드로 다시 이동하고이를 추가하는 것입니다 'requests.Session()와 S와 같은'라인의 첫 번째 대답 here에서 권장하는 쿠키가 유지하게하기 위해 :

with requests.Session(config={'verbose': sys.stderr}) as s: 

잘못된 것이 있으면 여기에 의견을 남겨주세요.

+0

@diamini, 불행히도 여전히 작동하지 않습니다. 어쩌면 브라우저가 제공하거나 제공하는 라이브러리에 달려 있으며 요청 라이브러리는 그렇지 않습니까? – user2003846

+0

@ user2003846, 의견에 감사드립니다. 추가 생각이 필요합니다. – Dlamini

+0

@ user2003846. 제 대답에 세 번째 제안을 추가했습니다. 희망에 따라 솔루션에 대한 아이디어가 한 가지 더 있습니다. – Dlamini