这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » python爬虫代理GET请求和POST请求的区别

共3条 1/1 1 跳转至

python爬虫代理GET请求和POST请求的区别

菜鸟
2020-06-19 17:35:28     打赏
GET 请求


它是 HTTP 常见的请求类型,最常见于向服务器查询某些信息。

可以将查询参数追加到 URL末尾,以便将信息发送给服务器。

对查询字符串的格式有要求,每个参数名称和值必须使用encodeURIComponent进行编码,才能放到URL末尾,必须用&符号隔开。例如:baidu.com/index.php?name=111&id=222

GET请求产生一个数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)

POST请求


它是 HTTP 常见的请求类型,最常见于向服务器发送应该被保存的信息或者查询某些信息。

可以添加请求参数,将请求参数添加到body中。

POST请求产生2个数据包,在火狐浏览器中,产生一个数据包。

GET请求和POST请求的差别


GET 请求的请求参数是添加到 head 中,可以在 url 中可以看到;POST 请求的请求参数是添加到BODY中,在url 中不可见。

GET 请求参数需要使用 encodeURIComponent 进行编码,必须用 & 符号隔开。

请求的url有长度限制,这个限制由浏览器和 web 服务器决定和设置的。例如IE浏览器对 URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。因为GET请求的参数是添加到URL中,所以GET请求的URL的长度限制需要将请求参数长度也考虑进去。而POST请求不用考虑请求参数的长度。

GET请求产生一个数据包;  POST请求产生2个数据包,在火狐浏览器中,产生一个数据包。这个区别点在于浏览器的请求机制,先发送请求头,再发送请求体。因为GET没有请求体,所以就发送一个数据包,而POST包含请求体,所以发送两次数据包,但是由于火狐机制不同,所以发送一个数据包。

由于GET请求的参数是在url中,所以可以直接在浏览器中打开

GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。

GET是幂等的,而POST不是。(幂等表示执行相同的操作,结果也是相同的)


当我们在浏览器中输入URL后,会发生什么?比如https://www.baidu.com

我们可以用curl -v https://www.baidu.com 来研究这个过程,会发现总共有3个子过程。

1、查找域名对应的IP地址


Rebuilt URL to: https://www.baidu.com/*   Trying 14.215.177.38...
我们可以通过nslookup www.baidu.com模拟这个过程,dns服务器返回两个IP地址,curl会随机选用其中一个IP服务器进行访问。


2、向IP对应的服务器发送SSL协商请求,进行SSL协商


3、SSL协商完成后,向IP对应服务器发起GET请求

GET / HTTP/1.1

Host: www.baidu.com

User-Agent: curl/7.54.0

网站会检查是不是真的浏览器访问。需加上User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.1276.73 Safari/537.36,表明你是浏览器访问即可。有时还会检查是否带Referer信息还会检查你的Referer是否合法。


服务器一般会使用cookie来标识用户,如果接受并带上该cookie继续访问,服务器会认为你是一个已标识的正常用户。因此,大部分网站需要使用cookie的来爬取内容。





关键词: http代理    

高工
2020-06-19 23:57:39     打赏
2楼

学到了


工程师
2020-06-20 09:42:19     打赏
3楼

原来如此


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]