今天用C#撸正方教务系统的时候,遇到了某个学校的教务系统,没办法获取到正确Cookie的情况。本来正方的Cookie应该是这样的:
ASP.NET_SessionId=abcdefghighlmnopqrstuvwx;
但是这次拿到的是这么个玩意儿:
safedog-flow-item=ABCDEFGHIGKLMNOPQRSTUVWXYZ123456
去网上搜了一下,safedog-flow是一个服务器的安全防御软件,叫安全狗。
不管怎么设置HttpClient和handler的参数都拿不到ASP.NET开头的那个Cookie,这时候在Cookie的审查元素里看了一眼,那里是两个都有的。
emmmm...感觉事情有了转机。
然后我把Cookie设置成safedog-flow那个,然后发送一个仅获取Header的请求
await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
var cookie = response.Headers.GetValue("Set-Cookie");
欸,惊不惊喜,意不意外。
后面的请求都带后面这个cookie就行,不需要前面的safedog-item,这样就解决掉了安全狗。