spider【第二篇】HTTP请求过程

浏览器发送HTTP请求的过程

调出网页分析工具:鼠标右键--->检测

可以看到,返回了很多资源,但是我们只需要找到url的这个文件即可,学过WEB的可能知道,其实除了文件www.baidu.com之外,其它都是一些前端(css js)和资源(image video)文件

Request URL: https://www.baidu.com/
Request Method: GET
Status Code: 200 OK
Remote Address: 127.0.0.1:56537
Referrer Policy: no-referrer-when-downgrade
General
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7
Cache-Control: max-age=0
Connection: keep-alive
Cookie: BAIDUID=81ADCC9DF10AA42863209E24ABD984D6:FG=1; BIDUPSID=81ADCC9DF10AA42863209E24ABD984D6; PSTM=1553090288; BD_UPN=12314753; BDUSS=pvVFczVS16Q05KWmt3VGpoaC1wMEYtZ2dHLWdrbHJhWUd-eFhsQzdCQmk3NzljQVFBQUFBJCQAAAAAAAAAAAEAAADFToeUZWNpdGh5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJimFxiYphcbH; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BD_HOME=1; H_PS_PSSID=1456_21122_28770_28721_28557_28585_28519_28605; delPer=0; BD_CK_SAM=1; PSINO=1
Host: www.baidu.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36
Request Headers
Bdpagetype: 2
Bdqid: 0x8ae084e7000484c8
Cache-Control: private
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Sat, 06 Apr 2019 11:11:31 GMT
Expires: Sat, 06 Apr 2019 11:11:30 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=272; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=1456_21122_28770_28721_28557_28585_28519_28605; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Transfer-Encoding: chunked
X-Ua-Compatible: IE=Edge,chrome=1
Response Headers

 这里由于浏览器把常用的请求头和响应头的数据(url 状态码等)放到了General里,这个不是http协议的字段,是浏览器自定义的,真正的请求头和响应头数据形式如下

请求头 =  Request Headers + 部分General
请求体 = Response Headers  + 部分General

url的形式

url的形式:scheme://host[:port#]/path/…/[?query-string][#anchor]

scheme:协议(例如:http, https, ftp)
host:服务器的IP地址或者域名
port:服务器的端口(如果是走协议默认端口,80 or 443)
path:访问资源的路径
query-string:参数,发送给http服务器的数据
anchor:锚(跳转到网页的指定锚点位置)
	http://www.jd.com/#product-detail
	url地址中是否包含锚点对响应没有影响

HTTP和HTTPS协议

HTTP
	超文本传输协议
	默认端口号:80
HTTPS
    HTTP + SSL(安全套接字层)
    默认端口号:443

HTTPS比HTTP更安全,但是性能更低

请求与响应

了解浏览器原理和网络编程原理的朋友知道:浏览器其实是一个socket client,服务器是一个socket server

请求: https://www.baidu.com/;底层浏览器是把数据封装成http格式发出去,这个格式把所有发出去的数据分成了两部分:请求头和请求体(发出去的数据)

响应:服务器返回的数据(响应体)和一些额外数据(响应头)

总之,头部分是一些规则,体部分是数据

HTTP常见请求头

Host (主机和端口号)
Connection (链接类型)
Upgrade-Insecure-Requests (升级为HTTPS请求)
User-Agent (浏览器名称)
Accept (传输文件类型)
Referer (页面跳转处)
Accept-Encoding(文件编解码格式)
Cookie (Cookie)
x-requested-with :XMLHttpRequest (是Ajax 异步请求)

HTTP常见响应头

状态码

200:success
3xx:转移至新的url
4xx:没有此url
500:服务器内部错误

补充

APP等客户端和浏览器一样,这里就不作过多解释,后面讲APP爬虫会细讲

 

 

 

 

 

 

 

 

 

 

  

posted @ 2019-04-06 18:58  沐风先生  阅读(323)  评论(0编辑  收藏  举报