我正在写一个python脚本,从我的学校网站下载课程内容(mp4,pdf)。我的学校使用Weblogin SSO身份验证来访问任何受保护的url。在
我能够使用以下脚本的第一部分验证我的凭据:#1. Authenticate
login_url = "https://weblogin.MY_SCHOOL.edu/login"
payload = {'login':'my_loging','password':'my_pass'}
target_url = "https://My_SCHOOL.instructure.com/courses/12345678""
with requests.Session() as c:
req_headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36}'}
c.headers.update(req_headers)
c.get(login_url) # to get cookies
c.post(url1, data=payload) #,headers = req_headers)
#2. get html from target site
W1 = c.get(target_url)
print(W1.url)
print(W1.text)
#3. parse html and download content.
#tbc
我可以看到我在c语言中的身份验证是成功的。文章.text,但当我尝试使用get()访问任何目标站点时请求.会话(),我没有得到类的预期html内容,而是收到了一条消息:"Since your browser does not support JavaScript, you must press the
Continue button once to proceed"
目标URL重定向到此URL:
为什么在成功的SSO身份验证后我无法访问目标url?我不确定请求模块中的javascript支持是否是问题所在,因为即使在我的互联网浏览器中禁用JS支持,我也能看到目标url的一些html内容,尽管不是全部内容。奇怪的是,我的get()请求卡在重定向的url中:“https:…/SAML2/Redirect/SSO““
如果你能告诉我如何绕过这个问题,我将不胜感激。我不想使用selenium或mechanize之类的Web驱动程序。我使用QtWebkit来呈现Javascript内容,但我不知道是否可以从请求.会话()到QtWebkit。在
任何帮助都是非常感谢的。谢谢