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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 28713|回复: 15

[使用技巧] Httphelper头信息(ContentType)默认为text/html无懈可击

[复制链接]
发表于 2014-5-7 00:16:15 | 显示全部楼层 |阅读模式
Httphelper头信息(ContentType)默认为text/html无懈可击


我发现最近有几个网友提出让我把Httphelper类的,
ContentType属性默认值 text/html修改为application/x-www-form-urlencoded

这个问题不在多解释,你们不管怎么说吧,反正不可能修改,除非你们自己修改,这是我最固执的说法,也许你们现在不理解,但我相信等你们懂了什么是最基础的Http就会理解我的。
下面我来说明一下为什么不修改。
Httphelper是干什么的



谁能告诉我。
我相信提这些问题的人,会说
模拟登录,
抓取Ajax,
模拟登录之后的一些操作,
用来实现接口,比如QQ,支付宝,充值的等等。

但是我想告诉你们,你们做这些工作占这个网站或是整个项目的比重的多少。
你们想想Httphelper是干什么的
从这里就能想明白。一个网站80%以上的网页就都是text/html 类型的,我相信很少见一个网站整个或者是大部分是application/x-www-form-urlencoded方式来获取数据的吧。


我来告诉大家Httphelper是做什么的, 
一句简单的话。

辅助实现所有Http协议或者是Https协议的通信
我的方向是:无所不能的爬虫,无所不能的模拟浏览器
而不是我们狭义的这一点点需求。
这是从大方向上所不允许的。

因为自己不懂Http才提出这样的问题。


 为什么这样说,大家向下看。
Http的最基础组成
头信息+Get或者是Post传输方法+凭证+传输数据

头信息
我一直认为这是Http里最简单最傻瓜的一个,因为他在任意一个抓包软件中都会清楚的显示出来。
QQ截图20140506234023.png
而这里面需要我们注意的并不多,其中最需要我们注意的就是ContentType的属性
为什么,因为他告诉Http是以什么样的方法进行上传。
更多的头信息请看这里http://www.sufeinet.com/thread-1866-1-1.html
在请求的头信息里还有一个UserAgent不过说实话这个一般不需要写的,
说白了,在Http请求的头信息中,
只要没有故意要增加的部分,
就只有这一个参数需要我们修改,需要我们注意。
然后我了个去,就这一个还是大多数情况下不需要动的。咱们有些人就不知道不懂,不看。
然后还折腾了半天,先是告诉我,我的Httphelper类有问题。最后又说应该默认为application/x-www-form-urlencoded


有时候我生气 就不想回复,这个太基础了,还说一些无知的逻辑。我真想说一句话,没文化真可怕,
但又怕伤了大家的自尊。一直没敢说。于是带气解决问题,言辞犀利。
但是我实在是不明白的是,明明是因为自己连最基础的都不懂,还在那这那的。

application/x-www-form-urlencoded 类型的请求才有多少种,Ajax,C#的Hander,别的没多少了吧,而 text/html 的有多少,成千上万,不要因为自己的现下需求,
或者是自身的学艺不精而,,,想想头信息,这是多么基础的一个东西,
我感觉懂点Http的人   抓包时这都是必须要看的信息,而有些人,
还一直在提,我只能说应该好好学习下。
Httphelper,不光是让你们实现登录,
抓取数据的,这才占多大点。

现身说法,不 是乱说
     更让我接受不了的是以自身说法,因为自己经常做登录,接口之类的项目,就以为90%的都是application/x-www-form-urlencoded
如果只从这个角度看确实是这样,因为这里只有三种接口,Hander,Ajax再加个异步。
但是你们自己都没有想过吗,你的登录占整个网站的比中多少。点多少个页面。
我敢说绝对没有JS文件和Css文件多吧,而这种文件都要使用Text/css Text/js之类的头,那你们会不会让我默认为这两种呢?
有些人告诉和90%我想你知道这个世界上有多少个网站吗?我想没多少人知道吧,我虽然不知道,但是我写爬虫爬取过3600万个网站(就是域名)
36亿(数据库大上约为320G左右)每天以上的网址从这里我总结出来的%比,解码方法,参数默认值。如果你每天或者是长这么大第一次听说过这样的数据,
就不要跟我说什么90%之类的话,因为我只会认为这是你自己乱讲的。没有任何根据
这也是我开始做去查网(www.7c.com)时创造下来的数据和实践,到现在这个网站也一直在用我的爬虫。我一直在从每天几十亿的数据历练我的类。
所我我才说占比多少。我感觉我有这个权力,因为我确实在使用

写这个文章没有针对谁,也不是说想怎么的,只是想让大家通过这个文章认识到一个问题,没有调查就没有发言权,没有实践就不要随意说话
如果你是来想让你帮你解决问题的,你一上来就说我的类有问题,你想我会安心的帮你解决问题吗,不会,我只会生气不高兴,我感觉这是人之长情,
毕竟这是免费的服务。我不欠大家的,你们不用一上来就说我这个不行,那个不行的,不行我没逼你们用来着,是你们自己非要用。

虽然今天的话说的有点重了,不过 我还是要说一下,因为我实在不想再因为这些问题而影响心情,也不希望大家因为这样的问题失去解决问题的机会。
我喜欢有礼貌的交流和有根据的建议。如果你真的想提建议,我真心的希望能看看什么是Http。或者最少应该明白我为什么这样写代码,不要一上来就说你这不行,应该怎么样。
总结

    找人办事总得先说几句好话吧,这样别人一高兴,肯定愿意帮你的几率就会大。
如果是想来找茬的,我看就没有必要了,因为这里我说了算,你占不了什么 上风。呵呵。

这文章写的  哎,头一回大晚上写文章,还这么郁闷的写。
算了,大家能听就听不能听也没事,还是一如既往的解决技术问题。






1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-5-7 08:47:59 | 显示全部楼层
呵呵,站长真有些生气了。
我一直认为,站长的类很好用。的确有人上来就说你的类有问题、有毛病,这是很不客气,也很伤人。不过建议站长还是无视这类人吧,毕竟只是极少数(估计是些毛头不伙之类的,不太懂得尊重他人及尊重他人的无私付出和成果)。
还请站长不要坏了心情。
谨代表我个人,向站长说一声谢谢,辛苦了。
 楼主| 发表于 2014-5-7 09:41:25 | 显示全部楼层
cload 发表于 2014-5-7 08:47
呵呵,站长真有些生气了。
我一直认为,站长的类很好用。的确有人上来就说你的类有问题、有毛病,这是很不 ...

心情多少会影响点,但绝对不会影响我开源的决心和一如既往的研究的。。。   关键是 这类人。还天天追着你问,发帖子发QQ,哎,我写这文章算是一个声明吧,以后这类问题就不再提了。也不做回复。
发表于 2014-5-7 09:58:34 | 显示全部楼层
本帖最后由 cload 于 2014-5-7 09:59 编辑

站长,在你的截图中,Content-Type: text/html; charset=gbk是响应头中的信息。
据我个人浅显的认识,在进行GET请求时,Content-Type这个参数在请求头是不存在的(当然,设置ContentType="text/html",甚至设置成"application/x-www-form-urlencoded",也可以正常返回结果,响应头中,返回对应的text/html、image/png、application/x-javascript……等结果)。
而在httphelper类中,无论GET还是POST,请求头中,ContentType这个参数都是存在的(默认为text/html),而与响应头无关。
仅为请教探讨,绝无冒犯之意。
 楼主| 发表于 2014-5-7 10:17:49 | 显示全部楼层
cload 发表于 2014-5-7 09:58
站长,在你的截图中,Content-Type: text/html; charset=gbk是响应头中的信息。
据我个人浅显的认识,在进 ...

text/html类型的在浏览器里一般默认是不会显示的,因为默认的就是Html格式
发表于 2014-5-8 10:57:46 | 显示全部楼层
强烈支持楼主ing……
发表于 2014-5-25 21:38:16 | 显示全部楼层
我就沫沫的 发个水贴, 支持下 站长吧,
发表于 2014-5-27 15:34:29 | 显示全部楼层
  完全能体会飞哥的心情 希望论坛越做越好
 楼主| 发表于 2014-5-27 15:44:24 | 显示全部楼层
cload 发表于 2014-5-7 09:58
站长,在你的截图中,Content-Type: text/html; charset=gbk是响应头中的信息。
据我个人浅显的认识,在进 ...

没有时就是默认值,就是text/html  这是浏览器默认的,在有些语言的服务器中是不被显示的,通常是显示出来的。
发表于 2014-5-27 16:03:03 | 显示全部楼层
站长苏飞 发表于 2014-5-27 15:44
没有时就是默认值,就是text/html  这是浏览器默认的,在有些语言的服务器中是不被显示的,通常是显示出 ...

我是否可以理解为:类中加上判断,POST时再加上相应的ContentType?
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-7-18 03:36

© 2014-2021

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