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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 4301|回复: 6

[其他] 响应头没有获取到Content-Length怎么办

[复制链接]
发表于 2019-4-25 22:13:27 | 显示全部楼层 |阅读模式
本帖最后由 2949497060 于 2019-4-25 22:14 编辑

我用fiddler抓包用IE访问“https://detail.1688.com/offer/55 ... 59.4.12192fb10DoiGR”获取的请求头和响应头如下:请求头:https://detail.1688.com/offer/55 ... 59.4.12192fb10DoiGRMethod:GET
Accept:text/html, application/xhtml+xml, */*
Accept-Language:zh-CN
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding:gzip, deflate
Host:detail.1688.com
Connection:Keep-Alive

响应头:HTTP/1.1 200 OK
Date: Thu, 25 Apr 2019 13:34:00 GMT
Content-Type: text/html;charset=GBK
Connection: keep-alive
Vary: Accept-Encoding
ufe-result: A6
S: STATUS_NORMAL
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: max-age=0,s-maxage=0
b2c_auction: 555115915998
page_cache_info: {"create_time":"2019-04-25T21:34:00","is_new":true,"expire_time":3600000}
at_auid: 555115915998
at_autype: 6_yigemina
P3P: CP='CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR'
X-Cache: MISS TCP_MISS dirn:-2:-2
Via: aliswift011015221006.center.na61[1266,200-0,M], aliswift011015202060.center.na61[200]
url-hash: id=555115915998&detail.1688.com
Server: Tengine/Aserver
Strict-Transport-Security: max-age=31536000
Timing-Allow-Origin: *
EagleEye-TraceId: 0b0b9df015561992390271024e2158
Content-Length: 259823


然后我自己写,添加的头信息与抓包的头信息完全一样,但是就是无法获取到响应头里的Content-Length,请问大神是什么原因呢?自己的代码如下:HttpItem hi = new HttpItem()            {
                URL = "https://detail.1688.com/offer/555115915998.html",
                Method = "get",
                KeepAlive = true,
            };
            hi.Header.Add("Accept-Language","zh-CN");
            hi.Header.Add("Accept-Encoding","gzip, deflate, br");
            HttpResult hr = new HttpHelper().GetHtml(hi);
            Console.WriteLine(hr.Header!=null?hr.Header.ToString():"null");




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2019-4-26 08:19:27 | 显示全部楼层
这个没什么作用都是自动化的。输出 时直接输出数据长度,没有默认为0
 楼主| 发表于 2019-4-26 10:46:27 | 显示全部楼层
站长苏飞 发表于 2019-4-26 08:19
这个没什么作用都是自动化的。输出 时直接输出数据长度,没有默认为0

你的意思是自己写的话就是没办法直接通过响应头获取到content-length吗?它那个fiddler里的响应头里的content-length也是它自己通过返回数据算出来显示的吗?我是用的fiddler-core获取的,我调试查看的确实是在获取返回数据之前的头信息里面就有这个content-length的,所以我感觉是我们c#的httpwebrequest请求的某些地方跟IE的request还是有不一样的地方吧
 楼主| 发表于 2019-4-26 10:48:36 | 显示全部楼层
站长苏飞 发表于 2019-4-26 08:19
这个没什么作用都是自动化的。输出 时直接输出数据长度,没有默认为0

我的目的主要就是想在获取响应数据之前先从响应头里获取到content-length,因为需要做一些判断以节省一些时间
发表于 2019-4-26 19:28:41 | 显示全部楼层
2949497060 发表于 2019-4-26 10:48
我的目的主要就是想在获取响应数据之前先从响应头里获取到content-length,因为需要做一些判断以节省一些 ...

有的话都能获取,服务端没有给就获取不了,4.0之后在请求是自动计算的,其他语言的不清楚啊。这个得测试,这个值与其他的不同,没有就是没有,应该与Cookie以及其他输入参数无关
 楼主| 发表于 2019-4-27 00:26:10 | 显示全部楼层
站长苏飞 发表于 2019-4-26 19:28
有的话都能获取,服务端没有给就获取不了,4.0之后在请求是自动计算的,其他语言的不清楚啊。这个得测试 ...

我就是比较好奇IE是怎么获取到的,或者说fiddler-core是怎么通过IE获取到的?
 楼主| 发表于 2019-4-27 08:10:45 | 显示全部楼层
站长苏飞 发表于 2019-4-26 19:28
有的话都能获取,服务端没有给就获取不了,4.0之后在请求是自动计算的,其他语言的不清楚啊。这个得测试 ...

研究了一下,发现没开fiddler的时候IE的响应头里面也没有获取到contentlength,看来是fiddler把这个值加进响应头里面去的
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-4-20 20:12

© 2014-2021

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