2017-12-17 19 views
-1

python requests.session() 함수를 사용하여 대학 웹 사이트에 로그인 할 수없는 것 같습니다. 로그인에 필요한 모든 헤더와 쿠키를 가져 오려고했지만 내 자격 증명으로 로그인하지 못했습니다. 그것은 오류를 표시하지 않지만 내가 로그인 한 후 검토 한 소스 코드는 아직 로그인하지 않은 것을 보여줍니다.Python이 웹 사이트에 로그인을 요청합니다.

내 모든 코드는 아래에 있습니다. 내 자격 증명으로 로그인과 암호를 채우지 만 나머지는 정확한 코드입니다.

import requests 

with requests.session() as r: 
    url = "https://www.ouac.on.ca/apply/nonsecondary/intl/en_CA /user/login" 
    page = r.get(url) 
    aspsessionid = r.cookies["ASPSESSIONID"] 
    ouacapply1 = r.cookies["OUACApply1"] 
    LOGIN = "" 
    PASSWORD = "" 
    login_data = dict(ASPSESSIONID=aspsessionid, OUACApply1=ouacapply1, login=LOGIN, password=PASSWORD) 
    header = {"Referer":"https://www.ouac.on.ca/apply/nonsecondary/intl/en_CA/user/login", "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0"} 
    logged_in = r.post(url, data=login_data, headers=header) 
    new_page = r.get(url="https://www.ouac.on.ca/apply/nonsecondary/intl/en_CA/profile/") 
    plain_text = new_page.text 
    print(plain_text) 
+0

Chrome/Firefox에서 'DevTool'을 사용하여 브라우저가 서버에 보내는 모든 헤더/쿠키를 볼 수 있습니다. – furas

+1

왜 BTW : url'intl/en_CA/user/login'에 공백이 있습니까? – furas

+0

아, 제 코드를 복사하여 붙여 넣은 것 같았습니다. 사고 였을 것입니다. – Danny

답변

1

당신은 게시하는 데 필요한 두 개의 입력 누락 -

  1. name='submitButton', value='Log In'
  2. name='csrf', 두 번째의 값이 그렇게 변화 유지 value=''

을 당신이 필요 동적으로 가치를 얻으십시오. 이 입력이 어디에 있는지보고 싶다면 닫는 태그 바로 위의 양식 닫기 태그로 이동하여 숨겨진 입력을 찾으십시오.

이렇게 두 값을 login_data에 포함하면 로그인 할 수 있습니다.

+0

감사합니다. TubbyStubby,하지만 웹 사이트에서 requests.session()을 사용할 때 csrf 값을 얻는 것 같지 않습니다. 쿠키 [ "csrf"], KeyError를 발생시키고 양식을 검사 할 때 요소가 맞다면 숨겨진 csrf 값이 있지만 firefox의 inspect 요소에서 네트워크 탭을 살펴볼 때 헤더 또는 쿠키 섹션에 나타나지 않습니다. 그러나 Params 탭에 'csrf'로 표시됩니다. 예, "csrf", "csrftoekn"및 "csrfmiddlewaretoken"을 입력하려고 시도했으며 모두 KeyError를 반환합니다. 도와주세요. 고맙습니다. – Danny