今天在做乐讯网(手机网页)注册功能时,使用HttpHelper进入短信注册页面并获取到
验证码链接,然后单独访问获取验证码图片,正确输入验证码提交的时候一直提示验证码
错误,我接入打码平台后发现平台里边的打码记录跟我访问到的不是一个,后来发现这个
验证码链接每次访问都生成的验证码图片都会发生变化。我在VS中进入注册页面返回获取
HttpResult的加入断点发现使用html视图查看result.html每次的验证码都一样。
请问我该怎么才能获取到像上述html视图中的验证码图片啊!
附1:注册地址http://login.lexun.com/login/reg.aspx
附2:代码端
[C#] 纯文本查看 复制代码 /// <summary>
/// 进入注册页面
/// </summary>
/// <returns></returns>
public bool inToRegPage(ref string msg)
{
string html = "";
string url = @"http://login.lexun.com/login/reg.aspx";
string referer = @"http://login.lexun.com/login/reg.aspx";
//
html = getMethod_HttpRquest(url, referer);
if (html.Contains("免费注册"))
{
//获取手机注册地址
int index = html.IndexOf(@"<a href=""reg.aspx");
html = html.Substring(index + (@"<a href=""reg.aspx").Length);
index = html.IndexOf(@"""");
this.gb_Url = "http://login.lexun.com/login/reg.aspx" + html.Substring(0, index).Replace("&", "&");
//
html = getMethod_HttpRquest(this.gb_Url, referer);
if (html.Contains("免费注册"))
{
//获取postUrl
index = html.IndexOf(@"method=""post"" action=""");
html = html.Substring(index + (@"method=""post"" action=""").Length);
index = html.IndexOf(@"""");
this.postUrl = "http://login.lexun.com/login/" + html.Substring(0, index).Replace("&", "&");
//获取authCodeName
index = html.IndexOf(@"http://clube.lexun.com/ImageCode/");
html = html.Substring(index + (@"http://clube.lexun.com/ImageCode/").Length);
index = html.IndexOf(".");
this.authCodeName = html.Substring(0, index);
//获取authCodeUrl
index = html.IndexOf(@"""");
this.authCodeUrl = @"http://clube.lexun.com/ImageCode/" + html.Substring(0, index).Replace("&", "&");
msg = "进入注册页面成功!\n获取提交链接成!\n获取验证码图片成功!\n获取验证码链接成功!";
return true;
}
}
return false;
}
/// <summary>
/// 获取验证码
/// </summary>
public bool getAuthcode(ref int codeID, ref string result)
{
try
{
StringBuilder sb = new StringBuilder();
System.IO.MemoryStream Ms = new MemoryStream();
HttpResult resultHTTP = verify(this.authCodeUrl, "");
this.gb_codeID = codeID = Wrapper.uu_recognizeByCodeTypeAndBytes(resultHTTP.ResultByte, resultHTTP.ResultByte.Length, 9010, sb);
result = sb.ToString();
return (codeID > 0);
}
catch (Exception ex)
{
return false;
}
} |