了解协议

爬虫工做流程
一、请求数据
协议:http https websocket
注意请求过程当中的 headers(请求头)中User-Agent referer cookies
请求库:urllib requests
工具:fiddler charles mysql

二、解析数据
正则表达式
bs4
lxml-xpathweb

三、数据持久化
文件:json txt
数据库:mysql mongodb
可视化正则表达式

四、反爬
cookies应用
ip代理
验证码
js加密
selenium驱动chrome/phantomjs pyv8库算法

五、爬虫框架
scrapy
pyspidersql


1、协议
http 单向通讯
特色
一、支持客户端/服务端模式 即 请求/响应模式
二、请求方法:get(参数在url) post
url:统一资源定位符 范式:http://host:port/path?key1=value1&key2=value2 默认端口 80
三、可以传递任意类型的数据对象,由content-type标记
四、无状态 ---> cookie session保存会话,识别身份mongodb

http请求/响应过程
一、客户端链接客户端 创建TCP套接字链接
二、客户端发送http请求
三、服务端接受请求,返回响应
四、服务端主动释放套接字,关闭tcp链接chrome

http1.0 一次request 一次 response http1.1 屡次request 屡次response 数据库

返回状态码
1xx:请求已接受,继续处理
2xx:成功
3xx:重定向
4xx:客户端错误 请求语法有问题
5xx:服务器错误json

常见的状态码
200 OK
204 No Content 表示请求已成功处理,可是没有内容返回
301 Moved Permanently 永久重定向,表示请求的资源已经永久的搬到了其余位置
303 See Other 表示请求资源存在另外一个URI,应使用GET定向获取请求资源
304 Not Modified 意味着资源没有被修改由于请求头指定的版本跟本地保存的版本并未修改或没有匹配。这说明没有必要从新传输资源,由于客户端仍然有一个之前下载的副本。
305 被请求的资源必须经过指定的代理才能被访问。
308:使用原有的地址请求方式来经过新地址获取资源。
400 Bad Request 表示请求报文存在语法错误或参数错误,服务器不理解
401 Unauthorized 表示发送的请求须要有HTTP认证信息或者是认证失败了
403 Forbidden 表示对请求资源的访问被服务器拒绝了
404 Not Found 表示服务器找不到你请求的资源 也有可能服务器就是不想给你而后骗你找不到
500 Internal Server Error 表示服务器执行请求的时候出错了
503 Service Unavailable 表示服务器超负载或正停机维护,没法处理请求 服务器

https
默认端口 443
加密算法
一、对称加密 有一个密钥进行加密和解密 DES AES
客户端将加密数据和密钥发给服务端,服务端解密数据--->不可靠
二、非对称加密 有一个公钥和私钥 公钥加密 私钥解密 RSA ECC 通常用于少许数据加密(加密耗时较久)
服务端生成公钥和私钥---->客户端请求公钥--->客户端加密数据并发送给服务端--->服务端用私钥解密
相对可靠,注意中间人攻击
三、hash算法 MD5 加盐
把数据映射成固定长度的哈希值,不可逆(不能由哈希值算出原始数据)
能够用来检验数据完整性(数据修改后会生成新的哈希值)、数据压缩(哈希值长度固定)
https采用证书 避免中间人攻击 服务器把公钥放在证书里面发给客户端,中间人没有证书

websocket 双向通讯 全双工持久化协议,第一次请求仍然用http协议,只是客户端会带上将请求升级成websocket的参数服务端收到客户端请求后,升级成websocket协议,陆续将数据发给客户端(服务端会保持链接),后面有新数据生成,无需客户端再次请求,服务端会主动把数据发给客户端,例如斗鱼的弹幕

相关文章
相关标签/搜索