xml地图|网站地图|网站标签 [设为首页] [加入收藏]

智能家电

当前位置:美高梅游戏网站 > 智能家电 > HTTP协议学习

HTTP协议学习

来源:http://www.gd-chuangmei.com 作者:美高梅游戏网站 时间:2019-09-21 21:05

上一篇做了一个smart qq机器人。

一、URL

前几天,因为突然上不了 smart qq,以为TX 要抛弃了。。所以就没有接着完善smart 机器人。应朋友要求,做一个多开微信。

在http传输中、我们都是通过url来寻找网络资源的。但是你真的了解url吗?你知道url的构成是怎么样的吗?如果你知道,那好吧、恭喜你、可以跳过URL这一小节了。oh~~ if not ,请跟我一起来认识一下我们每天都要敲上几百次的URL吧!

做了几天已经做好了,理论上最少可以28开微信,最多可以56开微信。同时在线同时收发信息,业务处理等。。(不知道同一个IP多个微信登录会不会被封,稳妥一点做一个代理上去是最好的,目前没空将就先)

 

实际上我只试过4开微信,没有问题。(我只有四个微信,所以极限我也不知道,下图只是两个号,在公司没带手机)

首先说url(Uniform Resource Locator)的构成。URL是由三部分组成的,传输协议+域名或IP地址+端口(缺损为80)+资源具体地址。如果要指定访问端口时需要用“:”来隔开例如(

图片 1

 

界面很丑,没办法我是做业务流程的,所以不在乎。

例如:

基本上已经做好了,但是接下来还要完善一下。代码乱的一批,看着就没眼看了。不过很多都是有注释的,应该能看的懂。

如图:

所谓的机器人,我觉得嘛加一些 生活服务的api 上去基本就差不多 了。(有什么营销业务的可以介绍一波)

 

废话不多说,接下来开始从头讲解一下,如何用http协议做一个自己的微信机器人。

图片 2

如有侵权请联系删除,只提供新手学习。。。

 

 二、资源请求(Request)

首先、在我们请求一个URL的时候我们想目标主机发送了些什么东西呢?这很简单、我们只需要通过浏览器的开发者工具就能看到、下面我们就以访问百度(www.baidu.com)为例子,看看我们在请求一个URL的时候、客户端向服务器发送了那些东西?Request消息结构又是怎么的呢?

 

如图(感谢share的朋友,让我省去了自己画图的时间^_^):Request的消息组成结构是这样的三部分,

第一部分就是图上的第一行、称为RequestLine(请求行)对应图中METHOD/ path所在行。

第二部分为RequestHeader(请求头)对应图中的Header-Name-1所在的区域。

第三部分为请求内容、就是途中的Optional request body部分。

图片 3

 

第一行中、METHOD表示请求方式、常见的如:

   

  GET:向Web服务器请求一个资源
POST:向Web服务器发送资源
PUT:向Web服务器发送资源并存储在服务器上
DELETE:从Web服务器上删除一个资源

   

 

当请求方式为Get的时候请求的body部分为空此时有可能在URL中跟着参数、此时。参数将在RequestHeader区域中。在path

  • to - resource部分则是请求资源名称,比如URL(www.baidu.com/index.php)那么path - to - resource 将由index.php替换,最后的HTTP/Version-number表示请求使用的协议类型和版本。

在RequestLine中、我们向服务器申明了我们的请求方式(METHOD),请求资源(path

  • to - resource)以及协议类型和版本(HTTP/Version-number);

RequestHeader中有许多参数、比如下图、我们访问百度首页(www.baidu.com)时的Request信息:

图片 4

 

从上面的请求中我们可以得知、我问是采用get的方式请求www.baidu.com(缺损端口80上的默认资源),请求协议是HTTP、版本是1.1、状态为长连接、并告诉服务器我们能接收解析gzip、deflate、sdch这三种压缩方式的数据、我们接收的语言为zh-CN,并且我们请求是携带了cookie信息。

 下面我们需要了解一下这些常用的参数到底是什么意思、以及起什么作用。

 

 Host:表示请求服务器地址(域名/ip)。

Connection:表示是否需要持久连接、在HTTP 1.1的时候、默认进行的是长连接、也就是连接处于keepalive状态、其优点是、在资源包含多个元素是(比如web页面中的图片)将减少下载时间,当Connection为Keep-Alive时、表示在Keep-Alive时间内不会断开连接。而非KeepAlive模式时、请求之后都将会断开。

Accept:指定客户端能够接受的内容类型、按照先后顺序表示客户端接受的先后次序、如上图中的Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8.

User-Agent:表示请求的客户端浏览器详细信息、通过这些信息服务器可以判断当前客户端口浏览器类别。

DNT:DO NOT TRACK 的缩写、要求服务器不要跟踪记录用户信息。为1时表示开启、0时表示关闭。主流浏览器都支持这些、在chrome,firefox中你可以在设置中找到这个设置项。

Accept-Encoding:浏览器能处理的编码、非字符编码而是指资源压缩方法(是否支持压缩、支持那种类型的压缩gzip,deflate等)。

Accept-Language:客户端申明自己所能接收的语言、比如gb2312 utf-8 等、语言和字符集的关系是、语言中包含了字符。

Cookie:浏览器在请求时如果本地存在请求服务器的资源的Cookie信息时、则在Request的时候将会带上这对Cookie信息、帮助服务器识别是否是历史访问人员(网站的请记住我功能就是采用这种方式实现的。将用户的信息通过respoonse时回写到客户端的cookie中。当用户第二次再访问时首先检查访问者是否携带了有效的cookie来做不同的UI呈现或者免登录之类的),cookie内容由服务器程序自行协定、主要格式为name(cookie名称),value(cookie名称对应的值)[Name-Value采用键值对的方式存储],Domain(域名地址),Path(资源路径,用于控制cookie的有效访问范围),Max-Age(有效期、单位为秒,超过这个时间则过期失效。)。对了。其实session也是通过cookie存储的。只不过cookie存储session的时候存储的是一个seesionid。而session实际是存储在服务器进程中的。

更具体的本文将不再阐述、请参照这个地址对查请求头参数核查地址或者这个

 

总结:方法就是为了告诉服务器需要做什么。

   值得注意的是、报文的流向始终是流向下游的(以请求点为起点、想下游流动、如果是客户端发起请求则请求报文流向是[客户端,代理1,代理2.,····服务器],响应报文反之。)

 

 

 

三、服务器响应(Response)

在我们发起一个请求时、被请求的服务器一定会给我们返回一点什么(假设与服务器取得连接)?返回的是什么呢?如果请求成功,将返回我们请求的结果、请求失败将返回错误信息、以及请求的处理状态等等。客户端就是通过服务器返回的请求的状态来判断请求的结果,因此再讲请求响应的时候我们必须先了解响应的状态。

    响应状态码用于表示服务器对请求的各种不同处理结果和状态,他是一个三维的十进制数。响应状态码可以归类为5种,使用最高位为1到5来进行分类,如下: 

本文由美高梅游戏网站发布于智能家电,转载请注明出处:HTTP协议学习

关键词:

上一篇:献给java求职路上的你们

下一篇:没有了