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
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
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
这里由于浏览器把常用的请求头和响应头的数据(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爬虫会细讲
谢谢