一般的microsoft的canvas验证登陆获取cookies的原理就是:先发送请求,获取网页返回的SAML数值后,再在一步一步地发送请求进行,最后登陆完成后发送最初获取的SAML数值校准,可以完成登陆。
(花了我好几个晚上。)之后我会单独开一个帖子来讲这个!
但是日前更新了在第一步的时候,跳转请求之后,无法通过session包或者requests进行跳转,这增加了自动登陆的难度!
有没有大佬知道怎么解决吗?当然,登陆后获取cookies是最直接的,但无法完成自动登陆的效果。 
[Python] 纯文本查看 复制代码 import requests
import re
import os
import json
import time
import getpass
import subprocess
from bs4 import BeautifulSoup
import urllib.parse
headers = {
"Origin": "https://login.microsoftonline.com",
"Accept": "text/html, application/xhtml+xml, application/xml;q=0.9, image/avif, image/webp, */*;q=0.8",
"Referer": "https://login.microsoftonline.com/common/login",
"Connection": "close",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Site": "same-origin",
"Sec-Fetch-Mode": "navigate",
"Te": "trailers",
"Upgrade-Insecure-Requests": "1",
"Accept-Language": "en-GB, en;q=0.5",
"Content-Type": "application/x-www-form-urlencoded"
}
def login_info():
# Step 1 --------------------
session = requests.Session()
response = session.get('https://nhh.instructure.com/', headers=headers, allow_redirects = True)
cookies = session.cookies.get_dict()
SimpleSAMLSessionID = session.cookies.get_dict()['SimpleSAMLSessionID']
AuthState = re.findall('value="(\_.*)"', response.text)[0]
return AuthState, cookies, SimpleSAMLSessionID
|