网页爬虫之路 基础扫盲

URL

URL统一资源定位符
1、URL的结构
    https://www.baidu.com:443/login/login.php?user=123&pass=456
        https                    使用https协议
        www.baidu.com:443    域名:端口
        login/login.php        资源路径
        ?                    文件名与GET参数之间用?分隔
        user=123                GET方式向服务器发送一个参数名为user,值为123
        &                    多个参数之间用&分隔
2、相对URL与绝对URL
3、URL编码与解码

协议头

GET请求头

//起始行 访问方式 资源路径和GET参数 协议/版本号
//附加协议头的时候删掉 winhttp自动生成
GET /v2/getpublickey?x=100&y=200 HTTP/1.1

//主机名 域名 winhttp对象会自动生成 可以不附加
Host: passport.baidu.com

//用户代理 服务器可以根据这个来识别是哪个浏览器
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0

//浏览器接受数据类型 winhttp对象会自动生成*/*类型 可以不附加
Accept: */*

//浏览器接受的语言
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

//浏览器支持的编码 
//附加协议头的时候必须删掉 不然返回的数据是压缩过的 需要自己再解压
Accept-Encoding: gzip, deflate, br

//来路 GET和POST中都会出现,表示这个请求是从哪个页面发出的
//可能会有会变化的值 要特别注意
Referer: https://www.baidu.com/?user=123456&pwd=1212121
    //非常重要 单独讲解
Cookie: BAIDUID=4A89DBBC382B25D9A43D12C4AB0151FD:FG=1 
//表示长连接 1.1版本才支持 winhttp对象自动生成 可以不附加
Connection: keep-alive

POST请求头

//起始行 访问方式 资源路径和GET参数 协议/版本号
//附加协议头的时候删掉 winhttp自动生成
POST /v2/api/?login HTTP/1.1
Host: passport.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Origin: https://www.baidu.com/
Referer: https://www.baidu.com/
Cookie: BAIDUID=4A89DBBC382B25D9A43D12C4AB0151FD:FG=1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
//提交的数据包的长度 不能多也不能少一个字节 winhttp自动生成 可以不附加
Content-Length: 22
//提交数据的类型 单独讲解
Content-Type: application/x-www-form-urlencoded
//POST提交的数据和协议头之间有一个空行
user=123456&pwd=654321

响应头

通常要注意的首部字段Set-Cookie和Location
还要注意状态码

状态码

状态码为301或302等有重定向时,如果你想获取当前链接的响应头或者响应数据。访问的时候要禁止重定向

协议头可以自定义

有些网站会在协议头里传递重要数据,并且一般是会变化的。如果网站检测,你就要找到来源,附加协议头提交

cookie

1、cookie的分类
	服务器返回	Set-Cookie
	JavaScript生成
	
2、cookie的作用
	识别身份(验证码)
	判断是否登录状态

3、cookie的结构
	名1=值1; 名2=值2; 名3=值3

4、抓包流程
	论清除cookie的重要性 (博客园)

5、合并更新步骤
	a) 新cookie 去除无效cookie
	b) 在新cookie里,寻找是否存在旧cookie里的名字。存在就用新的,丢掉旧的
	c) 两cookie组合到一个文本型变量中

6、前端会用JS生成很多cookie,但是并非所有cookie都会检测。
   比如Hm_lvt开头的一般没啥用。

编码

编码不对是中文乱码的根源,也是导致提交数据出错的重要原因
1、如何查看网页是何种编码 
	<meta charset="UTF-8" /> 
	这只是告诉浏览器以何种方式解析文档 真正决定网页编码的是在文件保存的时候
2、GBK    GB2312    ANSI    UTF8
3、URL编码与解码(UTF8)
4、不要用 编码_URL解码 来转换response
5、U码		\u6ce8\u518c\u6210\u529f (JS混淆)
6、十六进制文本	65797579616e		\x65\x79\x75\x79\x61\x6e (JS混淆)
7、Base64
	•  所有的数据都能被编码为只用65个字符就能表示的文本。
	•  65字符:A~Z a~z 0~9 + / =
	•  Base64的应用
		密钥 密文 图片 普通数据(新浪账号)
	•  Base64编码解码与btoa、atob

 

跨域

ajax 不能跨域

submit 表单提交

script 可以跨域

参数值一般在ajax或者submit

posted @ 2020-03-27 06:33  沐风先生  阅读(154)  评论(0)    收藏  举报