Я работаю над очисткой некоторых данных, но веб-сайт подтверждает мой запрос, проверяя файлы cookie.Я получаю одну «бесплатную» страницу, затем она ожидает, что у меня будет установлен набор localStorage или cookie.Обычно он устанавливает 3-5 файлов cookie при загрузке страницы.
Я не уверен, что делать или как сохранить файлы cookie.Я видел, как добавить куки в мой код, прежде чем скомпилировать его, но это работает, только если я перехожу с помощью Firefox / Chrome и получаю от них данные куки.Javascript сайта запутан, поэтому я не могу просто проанализировать его.Я использую ScrapySharp, HtmlAgilityPack и просто обычный старый HttpClient для обмена файлами, чтобы попытаться сохранить куки.
Я вызываю метод GetContent
, и мне нужно где-то сохранить информацию о cookie / localStorage, чтобы я мог использовать его сновав следующий раз я позвоню.
public static CookieContainer cookieContainer = new CookieContainer();
public static string GetContent(string url, string referrer= "https://www.google.com")
{
HttpClientHandler newhandler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
CookieContainer = cookieContainer
};
var httpClient = new HttpClient(newhandler);
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, CurrentOffice.url);
httpRequestMessage.Headers.Add("Connection", "keep-alive");
httpRequestMessage.Headers.Add("Pragma", "no-cache");
httpRequestMessage.Headers.Add("Cache-Control", "no-cache");
httpRequestMessage.Headers.Add("Upgrade-Insecure-Requests", "1");
httpRequestMessage.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36");
httpRequestMessage.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
httpRequestMessage.Headers.Add("Referer", referrer);
httpRequestMessage.Headers.Add("Accept-Encoding", "gzip, deflate");
httpRequestMessage.Headers.Add("Accept-Language", "en-GB,en-US;q=0.9,en;q=0.8");
//If I can detect them, I can add cookies here like this
cookieContainer.Add(baseAddress, new Cookie("CookieName", "cookie_value"));
var httpResponseMessage = httpClient.SendAsync(httpRequestMessage).Result;
var httpContent = httpResponseMessage.Content;
string result = httpResponseMessage.Content.ReadAsStringAsync().Result;
return result;
}
Я надеюсь, что кто-то тоже с этим справился и у него есть предложение.В качестве альтернативы, возможно, я мог бы попытаться заблокировать запуск javascript и перенаправить меня на страницу 405.