public override void Download(Anime.Episode episode) { string url = episode.anime.url.Replace("/anime/", "/play/") + "/" + episode.id; Debug.WriteLine(url); HtmlDocument doc = new HtmlDocument(); using (WebClient client = new WebClient()) { doc.LoadHtml(client.DownloadString(url)); } string script = doc.DocumentNode.SelectSingleNode("//script[3]").InnerHtml; Regex regex = new Regex("https:\\/\\/([a-zA-Z]+.[a-zA-Z]+)\\/e\\/([a-zA-Z0-9]+)"); url = regex.Match(script).Value; if (!url.StartsWith("https://kwik.cx/")) { MessageBox.Show("Not supported: " + url); return; } url = url.Replace("/e/", "/f/"); using (WebClient client = new WebClient()) { StringBuilder cookie = new StringBuilder(); StringBuilder _cookie = new StringBuilder(); System.UInt32 size = 256; bool result = InternetGetCookieEx(url, "cf_clearance", cookie, ref size, 0x00002000, IntPtr.Zero); bool _result = InternetGetCookieEx(url, "__cfduid", _cookie, ref size, 0x00002000, IntPtr.Zero); /* * Host: kwik.cx * User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0 * Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, * ; q = 0.8 * Accept - Language: pl,en - US; q = 0.7,en; q = 0.3 * Accept - Encoding: gzip, deflate, br * Connection: keep - alive * Cookie: __cfduid = d3e1ba2f15a2bfcb39d46c7a89f2d61401583685480; cf_clearance = 6c5ec57a5f15e47b04420ec786b22615911f401d - 1584721798 - 0 - 150; kwik_session = eyJpdiI6IlFjc3k1dkJLWjZlR3JEU3gwVHMrdHc9PSIsInZhbHVlIjoiSEdjbUZJZnAzVlMwODJWSUNyOWhLZjRMZXpLM3dzT1pmV2pVQ3JkXC9zV3FwdEpNYm0ybEN0NmM0a2FENDdKRmwiLCJtYWMiOiI0YjYxZDNlZGRiNTcyNTMzZTUwZGE0ODU4NjhmOWMwNTg5ZmJhZTRhZmMyMGJhZDQ2NDRhZmQ4MDA5ZTI3OGUwIn0 % 3D * Upgrade - Insecure - Requests: 1 * Cache - Control: max - age = 0 */ client.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0"); client.Headers.Add("Origin", "https://kwik.cx"); client.Headers.Add("Referer", url); client.Headers.Add("Upgrade-Insecure-Requests", "1"); client.Headers.Add("Accept-Encoding", "gzip,deflate,br"); client.Headers.Add("Accept-Language", "pl,en-US,q=0.7,en;q=0.3"); client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,;q=0.8"); client.Headers.Add("Host", "kwik.cx"); if (result && _result) { Debug.WriteLine("yes result"); client.Headers.Add(HttpRequestHeader.Cookie, cookie.ToString() + ";" + _cookie.ToString()); } foreach (var d in client.Headers.AllKeys) { Debug.WriteLine(d); } string str = ""; try { str = client.DownloadString(url); } catch (Exception e) { new WebBrowserWindow(url).ShowDialog(); client.Headers.Add(HttpRequestHeader.Cookie, Settings.cfCookies["kwik"]); Debug.WriteLine(client.Headers["Cookie"]); str = client.DownloadString(url); } Debug.WriteLine(str); } }
public abstract void Download(Anime.Episode episode);