它的验证码图片。 所以请不要通过网址回答下载。
作为一些错误,"复制命令"有时只是复制网址,而不是图片。 所以请不要使用IHTMLControlRange.exec命令解决问题。
有些网站不是HTML5页面。 所以请不要通过canvas标签来回答。
.... 还有别的吗?
答案 0 :(得分:0)
好吧,如果您使用的是Winforms,您可以使用图形对象截取WebBroser控件中呈现的所有内容的屏幕截图。
以下是您可以这样做的方法:
Map<Subject, List<Student>> map = new HashMap<>();
我们很清楚,Bitmap是System.Drawing.Image的特定实现。
答案 1 :(得分:0)
好的......我正试着下载......它有效!
使用与浏览器控件中的页面相同的参数伪造请求。
var hRequest = WebRequest.CreateHttp("/*Rand Code Url*/?rnd=" + new Random().NextDouble());
hRequest.Accept = "image/png, image/svg+xml, image/jxr, image/*; q=0.8, */*; q=0.5";
hRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
hRequest.Headers.Add(HttpRequestHeader.AcceptLanguage, /*Page AcceptLanguage*/);
hRequest.KeepAlive = true;
string cookie = "";
webBrowser.Invoke((MethodInvoker)delegate { cookie = webBrowser.Document.Cookie; });
hRequest.Headers.Add(HttpRequestHeader.Cookie, cookie);
hRequest.Headers.Add("DNT", "1");
hRequest.Host = /*page window.location.host*/;
hRequest.Referer = /*page.referer*/;
hRequest.UserAgent = /*page navigator.userAgent*/;
hRequest.Method = "GET";
var hResponse = hRequest.GetResponse();
var response = hResponse.GetResponseStream();
List<byte> data = new List<byte>();
//read stream
while (true)
{
int i = response.ReadByte();
if (i >= 0)
data.Add((byte)i);
else
break;
}
if (data.Count == 0) return "";//if not succes, return empty string
//convert to Base64 string
string RandBase64 = Convert.ToBase64String(data.ToArray());
hResponse.Dispose();