http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4560|回复: 8

[综合] 用httpHelper第一次访问时速度慢的请进

[复制链接]
发表于 2013-9-16 21:45:37 | 显示全部楼层 |阅读模式
本帖最后由 菩提树 于 2013-9-16 21:48 编辑

最近,因工作需要,需要用到httphelper,但是,有个奇怪的问题,就是,第一次链接网站时,速度很慢,大概需要10-20秒。接下来就很快了。在网上搜索,得到提示是:

WebClient 默认代理是开启的,而我并没有设置!故只有等待超时后才会绕过代理,这样就导致阻塞了.

那么,我就试着在httphelper中把代理服务ip,用户名和密码都设置成null,结果发现没效果。后来,我想着能否改一下httphelper来实现呢。应该实验,修改源码的方法是可行的,现将方法汇报如下:


       private void SetProxy(HttpItem item)
        {
            if (!string.IsNullOrEmpty(item.ProxyIp))
            {
                //设置代理服务器
                if (item.ProxyIp.Contains(":"))
                {
                    string[] plist = item.ProxyIp.Split(':');
                    WebProxy myProxy = new WebProxy(plist[0].Trim(), Convert.ToInt32(plist[1].Trim()));
                    //建议连接
                    myProxy.Credentials = new NetworkCredential(item.ProxyUserName, item.ProxyPwd);
                    //给当前请求对象
                    request.Proxy = myProxy;
                }
                else
                {
                    WebProxy myProxy = new WebProxy(item.ProxyIp, false);
                    //建议连接
                    myProxy.Credentials = new NetworkCredential(item.ProxyUserName, item.ProxyPwd);
                    //给当前请求对象
                    request.Proxy = myProxy;
                }
                //设置安全凭证
                request.Credentials = CredentialCache.DefaultNetworkCredentials;
            }
             //黑色部分是修改的代码

            else
            {
             request.proxy=null;
            }
        }



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-9-16 21:51:57 | 显示全部楼层
我们访问网站怎么没有这个问题,默认的不需要修改吧,而且你不设置IP,我是不会做任何处理的。

这会不会和其实配置有关系,比如你的IE是否设置了代理 ,就算是你这样写了,也不可能是第一次有问题,其他几次就没有问题吧,我感觉理论上不通。
你是只在你电脑上这样,还是同样的程序放别人电脑上也是这样,楼主可以上传个Demo,写上你访问的网址,让大有测试下,先排除本机问题
 楼主| 发表于 2013-9-16 21:59:00 | 显示全部楼层
本帖最后由 菩提树 于 2013-9-16 22:00 编辑

在别的电脑也是这样。而且,我发现别人写的代码也遇到这个问题的。

下面这个网址是我为了解决问题找到的。

http://hi.baidu.com/dalianufo/item/738b2b0226a1f624a0312df8

另外,我想说的是,其实,刚开始我也怀疑是我写的代码的问题。后来,我用你的代码生成器模拟,还是有问题。实在没法子了,我就用百度贴上的方法,居然行了。
   最后,我就修改了httphelper后的方法,成功了


     其实,修改不修改,对于不设置代理服务器来说,应该是一样的把。反正问题得到了解决。不过,老大,我也不知道是否真的解决。呵呵
发表于 2013-9-17 08:24:25 | 显示全部楼层
WebClient?  我用的是HttpWebRequest这概念就不一样啊,你确定用的是我最新版本的,不过我感觉不是最新的也不对,也不应该有这个问题,如果要是有的话我早就发现了。而且我做的这么多项目里没有出现过这种情况,这个问题,最主要是你请求的是什么网址,我估计和网站本身有关系,你提供下网址,我看下具体是什么情况。 request.Proxy 默认的应该是应用了,IE浏览器的代理 。所以我说和IE设置有关系。这个建议不要设置为NUll,这只是权宜之计,你提供下网址吧,如果真有网站有这么情况到是可以进行修正了,到时候你的大名 就会被记录大HttpHelper的历史中{:soso_e113:}

其实你说的问题我并不怀疑,只是对你的解释感觉理论上不通过,问题是存在的,关键是咱们没有找到为什么出这种问题。解决是解决了,只是也不知道为什么是吧。还是先提供下网址吧。
发表于 2013-9-18 08:35:18 | 显示全部楼层
我也遇到这种问题,第一次也是特别慢,我在app.config文件中加入下面的就好了
  1.   <system.net>
  2.     <defaultProxy
  3.         enabled="false"
  4.         useDefaultCredentials="false" >
  5.       <proxy/>
  6.       <bypasslist/>
  7.       <module/>
  8.     </defaultProxy>
  9.     <settings>
  10.      
  11.     </settings>
  12.   </system.net>
复制代码
发表于 2013-9-19 09:35:16 | 显示全部楼层
受教了,学习中……
发表于 2014-3-1 12:02:08 | 显示全部楼层
wxfy2011 发表于 2013-9-18 08:35
我也遇到这种问题,第一次也是特别慢,我在app.config文件中加入下面的就好了

这才是高手!
发表于 2014-3-19 11:08:19 | 显示全部楼层
以前我也遇到這個問題,自己電腦上編譯出來的到了別人的電腦也是這樣,但修復下LSP后問題就消失了。好像跟某些網絡封包監聽工具有點衝突。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-13 14:29

© 2014-2021

快速回复 返回顶部 返回列表