|
在图片中,的webBrowser1中是一个执行JS的网页..
网页代码大概如下
function Calculate()
{
var pt_uin = document.getElementById("pt_uin").value;
var pass = document.getElementById("pass").value;
var captcha = document.getElementById("captcha").value;
var G = QXWEncodePwd(pt_uin,pass,captcha);
document.write(G);
}
<input type="text" name="pt_uin" id="pt_uin" />
<input type="text" name="pass" id="pass" />
<input type="text" name="captcha" id="captcha" />
<input type="text" name="p" id="p" />
C#的代码大致如下
#region 加密密码
public void JM(string pt_uin, string pass, string captcha)
{
he = webBrowser1.Document.GetElementById("pt_uin");
he.SetAttribute("value", pt_uin);
he = webBrowser1.Document.GetElementById("pass");
he.SetAttribute("value", pass);
he = webBrowser1.Document.GetElementById("captcha");
he.SetAttribute("value", captcha);
webBrowser1.Navigate("javascript:Calculate();");
}
#endregion
private void button1_Click(object sender, EventArgs e)
{
qq = textBox1.Text;
pass = textBox2.Text;
string url = "https://ssl.ptlogin2.qq.com/check?uin=" + qq + "&appid=1003903&js_ver=10025&js_type=0&login_sig=XaZkLSUGEkUeCKMa9KSphNTcw6JNFu707JGMms0Ir4eGT*zBx3nu3GrFywftWUJD&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html&r=0.5501766135943944";
retstr=asd(url, ref cookie);//获取Cookie
code = yzyzm(retstr,1);//获取验证码
pt_uin = yzyzm(retstr, 2);//获取pt_uin
JM(pt_uin, pass, code);//控制网页执行JS代码
JMPass = webBrowser1.DocumentText;//加密密码 获取webBrowser1的源代码, 上面的JM函数控制了网页,JS代码Document.Write(G)输出了加密后的字符串,然后直接获取就是加密的密码了, 问题就在这里.如果直接在JM(pt_uin, pass, code);后面获取源代码,可能webBrowser1还没执行好.所以获取的是没执行JS的时候的源代码,而不是执行了JS后输出的源代码...问题就是我应该如何在网页执行完Document.Write(G);后再执行 JMPass = webBrowser1.DocumentText;呢?
}
|
-
登录窗口
|