public void SetImage(string img_url) { CookieAwareWebClient wc = new CookieAwareWebClient(); wc.m_container = cc; Image i = Utils.GetImageFromBytes(Comm.DecompressBytes(wc.DownloadData(img_url))); Utils.FitImageNicely(ref this.picCAPTCHA, i); }
private static byte[] Download_WC_real(string sURL, ref CommFetchOptions options) { WebRequest oReq; HttpWebRequest ohReq; Uri url = new Uri(sURL); byte[] bContent = null; bool bReceivedUnicodeEncoding = false; if (options.DataType_JSON) { Comm.SetAllowUnsafeHeaderParsing20(true); } System.Net.ServicePointManager.Expect100Continue = false; try { oReq = WebRequest.Create(sURL); ohReq = (HttpWebRequest)oReq; if (string.IsNullOrEmpty(options.Accept)) { ohReq.Accept = "*/*"; } else { ohReq.Accept = options.Accept; } if (options.Method == CommFetchOptions.Methods.POST) { oReq.Method = "POST"; } else { oReq.Method = "GET"; } oReq.Headers.Add("Accept-Language: en-US,en;q=0.8"); oReq.Headers.Add("Accept-Encoding: gzip,deflate"); oReq.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3"); if (options.HTTP_Version == CommFetchOptions.HTTP_Versions.Version_1p0) { ohReq.ProtocolVersion = System.Net.HttpVersion.Version10; } else { ohReq.ProtocolVersion = System.Net.HttpVersion.Version11; } if (options.UserAgent == CommFetchOptions.UserAgentModes.IE9) { ohReq.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"; } else if (options.UserAgent == CommFetchOptions.UserAgentModes.AIR) { ohReq.UserAgent = "Mozilla/5.0 (Android; U; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/4.0"; } else if (options.UserAgent == CommFetchOptions.UserAgentModes.Dalvik) { ohReq.UserAgent = Comm.RandomDalvikString; } else { ohReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36"; } for (int i = 0; i < options.Cookies.Count; i++) { Utils.Logger("Cookie sent: " + options.Cookies[i].Name + "=" + options.Cookies[i].Value.ToString()); } for (int i = 0; i < options.Cookies.Count; i++) { if (options.Cookies[i].Name.ToLower() == "csrftoken") { Utils.Logger("Request header added: X-Requested-With: XMLHttpRequest"); oReq.Headers.Add("X-Requested-With: XMLHttpRequest"); Utils.Logger("Request header added: X-CSRFToken=" + options.Cookies[i].Value.ToString()); ohReq.Headers.Add("X-CSRFToken", options.Cookies[i].Value.ToString()); break; } } if (options.DataType_JSON) { ohReq.Accept = "application/json, text/javascript, */*; q=0.01"; Utils.Logger("Request data type switched to JSON"); } if (options.XMLHttpRequest) { oReq.Headers.Add("X-Requested-With: XMLHttpRequest"); } if (options.UserAgent == CommFetchOptions.UserAgentModes.Dalvik) { oReq.Headers.Add("X-Unity-Version: 4.5.4f1"); } ohReq.KeepAlive = true; oReq.Proxy = System.Net.WebRequest.DefaultWebProxy; if (!string.IsNullOrEmpty(options.Auth_Username)) { oReq.Credentials = new NetworkCredential(options.Auth_Username, options.Auth_Password); } if (options.Credentials != null) { oReq.Credentials = options.Credentials; } if (options.Referer == CommFetchOptions.Referers.Full_URL) { ohReq.Referer = sURL; } else if (options.Referer == CommFetchOptions.Referers.Host_Only) { ohReq.Referer = "http://" + url.Host + "/"; } else if (options.Referer == CommFetchOptions.Referers.Custom) { ohReq.Referer = options.CustomRefererURL; } //else if (options.Referer == CommFetchOptions.Referers.None) // ; // no referer if (options.Method == CommFetchOptions.Methods.POST) { ohReq.ContentLength = (long)(Utils.CByteUTF8(options.POST_Data).Length); if (options.DataType_JSON) { ohReq.ContentType = "application/json"; //ohReq.ContentType = "application/json, text/javascript, */*; q=0.01"; } else { ohReq.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; } } else { oReq.Headers.Add("Pragma: no-cache"); oReq.Headers.Add("Cache-Control: max-age=0"); } ohReq.CookieContainer = options.CookieContainerGet(); oReq.Timeout = (options.TimeOut * 1000); try { ohReq.Host = url.Host; } catch { } ohReq.MaximumAutomaticRedirections = 3; ohReq.AutomaticDecompression = (options.AutomaticDecompress) ? DecompressionMethods.GZip | DecompressionMethods.Deflate : DecompressionMethods.None; if (options.Method == CommFetchOptions.Methods.POST) { Stream oDataStream = oReq.GetRequestStream(); oDataStream.Write(Utils.CByteUTF8(options.POST_Data), 0, Utils.CByteUTF8(options.POST_Data).Length); oDataStream.Close(); if (Comm.WantToSeePageFetches) { if (options.DataType_JSON) { Utils.Logger("<fs-><color=#565656>[" + DateTime.Now.Hour.ToString("00") + ":" + DateTime.Now.Minute.ToString("00") + ":" + DateTime.Now.Second.ToString("00") + "." + DateTime.Now.Millisecond.ToString("000") + "]</color><fx>" + " <fs-><color=#5656aa><b>Posted data:</b><fs+> " + options.POST_Data); } } } WebResponse oResp = oReq.GetResponse(); HttpWebResponse ohResp = (HttpWebResponse)oResp; foreach (Cookie cookie in ohResp.Cookies) { options.CookieContainerAdd(cookie); } for (int i = 0; i < oResp.Headers.Count; i++) { string header = oResp.Headers.Keys[i]; string value = oResp.Headers.Get(i); if (header == "Content-Type") { value = value.ToLower(); if (value.StartsWith("text/html")) { // assume unicode bReceivedUnicodeEncoding = true; } else { if (value.ToLower().Contains("charset=utf-8")) { bReceivedUnicodeEncoding = true; } } } } if (bReceivedUnicodeEncoding) { string sContent = ""; using (StreamReader oSRead = new StreamReader(oResp.GetResponseStream(), Encoding.UTF8, true)) { sContent = oSRead.ReadToEnd(); oSRead.Close(); } bContent = Utils.CByteUTF8(sContent); } else { BinaryReader oSRead = new BinaryReader(oResp.GetResponseStream()); List <byte> data = new List <byte>(); for (; ;) { try { data.Add(oSRead.ReadByte()); } catch { break; } } oSRead.Close(); bContent = data.ToArray(); data.Clear(); } oResp.Close(); } catch (TimeoutException ex) { options.LastException = ex; if (options.WantErrors) { return(Utils.CByteUTF8("[timeout]")); } return(null); } catch (Exception ex) { options.LastException = ex; if (options.WantErrors) { return(Utils.CByteUTF8("[exception: " + ex.Message + "]")); } return(null); } if (!options.AutomaticDecompress) { return(bContent); } else { byte[] b = Comm.DecompressBytes(bContent); if (Comm.WantToSeePageFetches) { if (options.DataType_JSON) { Utils.Logger("<fs-><color=#565656>[" + DateTime.Now.Hour.ToString("00") + ":" + DateTime.Now.Minute.ToString("00") + ":" + DateTime.Now.Second.ToString("00") + "." + DateTime.Now.Millisecond.ToString("000") + "]</color><fx>" + " <fs-><color=#5656aa><b>Received data:</b><fs+> " + Utils.CStr(b)); } } //Utils.Logger("Notice: server returned UTF-8 (we requested UTF-8)"); return(b); } }