2017-04-18 2 views
0

파이썬을 사용하여 SAML의 로그인 페이지로 리디렉션 된 후 로그인 정보를 해당 쿠키로 정상적으로 게시 할 수 있습니까? 아니면 SAML이 그렇게 간단하지 않습니까?웹 스크래핑 로그인

이것은 리디렉션되었습니다 page 파이썬 요청을 사용하여 로그인하려고합니다.

import requests 

User = ***** 
Pass = ***** 

payload = { 
    'UserName': User, 
    'Password': Pass 
} 

session = requests.session() 

moodle_url = "https://moodle.vle.monash.edu/login/index.php?authCAS=CAS" 
response = session.get(moodle_url) 
cookies = session.cookies.get_dict() 


SAML_url = response.url 
response = session.post(SAML_url, payload) 

print(response.url) 

이렇게하면 다음, 나는 아직도 내가 수동으로 와이어 샤크를 사용하여 패키지를 크롬을 사용하여 캡처 로그인 시도했습니다 같은 url

을 다시 얻을 나를 로그인 할 수하지 않는 것 HTTP 스트림을 사용하면 브라우저가 리디렉션 된 직후에 SimpleSAMLAuthToken 쿠키를 얻는 것으로 보입니다. 로그인 ID와 비밀번호가 포함 된 POST가 보이지 않아서 이해할 수 없습니다.

필자가 이해할 수 있도록, 파이썬 요청을 사용하여 모방 할 수있는 POST - ing 형식의 데이터가 있어야하지만, Wireshark에서 "http"를 필터링하면 그 중 어떤 것도 표시되지 않습니다.

POST 중 문제입니까 아니면 페이로드 매개 변수 하나 또는 두 개가 누락 되었습니까?

저는 파이썬과 웹 스크래핑에 대해 상당히 새로운 것입니다. 디버깅 팁은 크게 감사드립니다!

답변

1

Wireshark는 잔인합니다 ... Google 크롬의 네트워크 탭을 살펴보세요. POST 데이터에 다음과 같은 형식이 필요하다는 것을 알 수 있습니다.

post_data = {'UserName': 'Monash\%s' User, 
      'Password': Password, 
      'AuthMethod':'FormsAuthentication'} 

올바른 사용자 에이전트를 사용하면 좋은 생각이 될 것입니다. 그렇게하지 않으면 아마 봇으로 탐지되어 웹 서버가 액세스를 거부하게됩니다.

팁 : 모든 POST 요청 (내용 유형, 수락 ...)에 적절한 헤더를 설정하십시오.

+0

팁 주셔서 감사합니다! –