因为我要用到Fiddler抓取使用HTTPhelper访问时的记录,但是fiddler抓不到新版HTTPhelper的数据,经过研究,发现是新版HTTPhelper默认不适用ie的代理导致的,即使把ProxyIp = "" 设置为空,也不会使用ie的代理。
在网上找到Fiddler是把ie添加了代理127.0.0.1:8888,然后监听8888这个端口来抓包的,于是,我把HTTPhelper的代理设置为ProxyIp ="127.0.0.1:8888" ,此时终于能抓到包了。。到这里,如果是只抓http类型的童鞋,这样就解决了fiddler不能抓包的问题。。但是我有碰到了新的问题。
如果是抓https类型的网站,把HTTPhelper的代理设置成ProxyIp ="127.0.0.1:8888" 后,就会提示“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。”
然后我测试了使用其他的代理,ProxyIp ="203.204.206.176:80" 不会提示出错,http和https都能获取到内容,不过这样的话,Fiddler还是抓不到包。。。
晕啊,我就要崩溃了。。
下面附上我的测试图片和测试代码。
第一,第三,第四个按钮都能抓到数据。第一个按钮Fiddler也能抓到get的包
第二个按钮点击直接就出错了。
[C#] 纯文本查看 复制代码 private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Text = GetHtml("http://zz.ganji.com/", "127.0.0.1:8888");
}
private void button2_Click(object sender, EventArgs e)
{
richTextBox1.Text = GetHtml("https://passport.ganji.com/login.php", "127.0.0.1:8888");
}
private void button3_Click(object sender, EventArgs e)
{
richTextBox1.Text = GetHtml("http://zz.ganji.com/", "203.204.206.176:80");
}
private void button4_Click(object sender, EventArgs e)
{
richTextBox1.Text = GetHtml("https://passport.ganji.com/login.php", "203.204.206.176:80");
}
private string GetHtml(string url,string proxyIp)
{
HttpHelper http = new HttpHelper();
HttpItem item = new HttpItem()
{
URL = url,//URL 必需项
Method = "get",//URL 可选项 默认为Get
IsToLower = false,//得到的HTML代码是否转成小写 可选项默认转小写
Cookie = "",//字符串Cookie 可选项
Referer = "",//来源URL 可选项
Postdata = "",//Post数据 可选项GET时不需要写
Timeout = 100000,//连接超时时间 可选项默认为100000
ReadWriteTimeout = 30000,//写入Post数据超时时间 可选项默认为30000
UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统 可选项有默认值
ContentType = "text/html",//返回类型 可选项有默认值
Allowautoredirect = false,//是否根据301跳转 可选项
//CerPath = "d:\123.cer",//证书绝对路径 可选项不需要证书时可以不写这个参数
//Connectionlimit = 1024,//最大连接数 可选项 默认为1024
ProxyIp = proxyIp,//代理服务器ID 可选项 不需要代理 时可以不设置这三个参数
//ProxyPwd = "123456",//代理服务器密码 可选项
//ProxyUserName = "administrator",//代理服务器账户名 可选项
ResultType = ResultType.String
};
HttpResult result = http.GetHtml(item);
string html = result.Html;
string cookie = result.Cookie;
return html;
}
|