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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

楼主: 3200950

[HttpHelper] 一直用你的httphelper类,基本没出过问题,不知道为何这次就这个网址获取不了返回信息

[复制链接]
发表于 2014-8-29 14:32:07 | 显示全部楼层
我去,你要源码干什么, QQ截图20140829143428.jpg


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
回复

使用道具 举报

 楼主| 发表于 2014-8-29 14:34:25 | 显示全部楼层
站长苏飞 发表于 2014-8-29 14:32
我去,你要源码干什么,

我错了,眼神不好
Connection:close
Vary:Accept-Encoding,Accept-Encoding
Pragma:no-cache
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Content-Type:text/html
Date:Fri, 29 Aug 2014 06:34:03 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Server:nginx
回复

使用道具 举报

发表于 2014-8-29 14:44:40 | 显示全部楼层
哎,敢提供个账户和密码吗,都是截图。这测试都没得测试。截图也是一点,敢不敢放大让人看全点,
回复

使用道具 举报

 楼主| 发表于 2014-8-29 15:03:28 | 显示全部楼层
站长苏飞 发表于 2014-8-29 14:44
哎,敢提供个账户和密码吗,都是截图。这测试都没得测试。截图也是一点,敢不敢放大让人看全点,

账号密码你随便填,如果错了,他有返回消息。问题最主要的原因是,模拟器没有返回消息,百思不得其解。我看你的Content-Type说明,测了一下,还是不行
回复

使用道具 举报

 楼主| 发表于 2014-8-29 15:43:51 | 显示全部楼层
站长苏飞 发表于 2014-8-29 15:31
参数没加全吧,加全就好了
[mw_shl_code=csharp,true]     HttpItem item = new HttpItem()
             ...

我对你的类改写了一些,已适应自己的需要,不过澄清一点,我的确按照浏览器抓包数据来写的,只是不清楚为何老是返回不了信息。这次受教了,是header的原因,就你写的那个
Pragma:no-cache

很想问,服务器返回的 Pragma:no-cache这个头信息,你如何判定应该放入请求的头信息里面?
回复

使用道具 举报

 楼主| 发表于 2014-8-29 15:50:46 | 显示全部楼层
我改写你的cookie管理,直接用的容器CookieContainer,虽然数据有点多,但是可以减少很多工作量了,不用再去判断不用的域名用何种cookie,
特别是小米这样的网站 xiaomi、mi。2个域名来回转,麻烦。
/// <summary>
        /// 设置Cookie
        /// </summary>
        /// <param name="item">Http参数</param>
        private void SetCookie(HttpItem item)
        {
            if (!string.IsNullOrEmpty(item.Cookie))
                request.Headers[HttpRequestHeader.Cookie] = item.Cookie;
            //设置CookieCollection
            if (item.ResultCookieType == ResultCookieType.CookieCollection)
            {
                request.CookieContainer = new CookieContainer();
                if (item.CookieCollection != null && item.CookieCollection.Count > 0)
                    request.CookieContainer.Add(item.CookieCollection);
            }
            else if (item.ResultCookieType == ResultCookieType.CookieContainer)
            {
                request.CookieContainer = item.CookieContainer;
            }
        }

回复

使用道具 举报

发表于 2014-8-29 15:52:22 | 显示全部楼层
你上面截图里的抓包不是分的很清楚吗。如果在接收流中是肯定不会带的,如果在请求流中是必须带的。这个很容易分吧

请求流和接收的流要分清楚,当然请求头信息和接收头信息要分清楚。一般请求里是不会有这个的,你看到的普通的是发送头信息里的,

item.Header.Add("Pragma", "no-cache");
回复

使用道具 举报

 楼主| 发表于 2014-8-29 16:19:17 | 显示全部楼层
站长苏飞 发表于 2014-8-29 15:52
你上面截图里的抓包不是分的很清楚吗。如果在接收流中是肯定不会带的,如果在请求流中是必须带的。这个很容 ...

你的意思是,Pragma在接收流中如果存在,那么我在请求流中,就需要去添加这个键,不然服务器那边检测不了这个键,就返回不了信息? 除开常用的header里面的键?

如果这样的话,我用浏览器自带的抓包工具进行抓包的时候,为何浏览器的请求流中没有Pragma这个键?
回复

使用道具 举报

发表于 2014-8-29 16:26:24 | 显示全部楼层
没有那是抓包工具有问题。你理解反了“Pragma在接收流中如果存在,那么我在请求流中,就需要去添加这个键”

是在请求流中有才需要带,所有的操作,你只要管请求流就行了,接收是人家返回给你的,你什么也不用操作,也没有办法操作。

回复

使用道具 举报

 楼主| 发表于 2014-8-29 16:29:38 | 显示全部楼层
站长苏飞 发表于 2014-8-29 16:26
没有那是抓包工具有问题。你理解反了“Pragma在接收流中如果存在,那么我在请求流中,就需要去添加这个键” ...

我也是这样理解的,我发送的header应该要齐全,可是一个浏览器自带抓包,和专用的抓包工具都没抓到 Pragma,好奇怪。
站长你费心了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-5-2 06:16

© 2014-2021

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