爬虫01

爬虫的原理
网页抓取
信息提取
数据存储

爬虫的类型
静态网站
动态网站
App内嵌 HTML
移动端App

爬虫的实际应用
搜索引擎
新闻聚合
社交应用
舆情监测
人工智能数据集
数据分析
行业数据
竞争对手监控

OSI七层模型(开放系统互联参考模型)
物理层:电器连接
数据链路层:交换机、STP、帧中继
网络层:路由、IP协议
传输层:TCP、UDP协议

(统称应用层)
会话层:建立通信连接、网络拨号
表示层 (每次连接只处理一个请求) —> 应用层
应用层:HTTP、FTP

HTTP协议
定义 : 超文本传输协议
工作在应用层
简单的,可扩展的
无状态
版本 : 1.1
端口:80

HTTPS协议
定义: 安全超文本传输协议
基于HTTP协议
使用 SSL加密 (对head 和 body 都加密)(传输层进行加密)
端口:443

Http与HTTPS的区别

   HTTP  HTTPS

端口 80 443
证书 无 CA 证书
传输 明文 SSL加

HTTP Method
GET
HEAD
POST
PUT
DELETE
CONNECT
OPTIONS
TRACE
PATCH

Request header
scheme 指定低层使用的协议(例如:http, https, ftp)
host HTTP服务器的IP地址或者域名
port HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/
path 访问资源的路径
query-string 发送给http服务器的数据
anchor- 锚
例子:
http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff
Schema: http
host: www.mywebsite.com
path: /sj/test/test.aspx
Query String: name=sviergn&x=true
Anchor: stuff

HTTP header
Accept
作用: 浏览器端可以接受的媒体类型
例如: Accept: text/html 代表浏览器可以接受服务器回发的类型为 text/html 也就是我们常说的html文档,
如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable)
通配符 * 代表任意类型
例如 Accept: / 代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个)

Accept-Charset
作用:浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312,utf-8(通常我们说Charset包括了相应的字符编码方案)

Accept-Encoding:
作用: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是指字符编码);
例如: Accept-Encoding: gzip, deflate

Accept-Language
作用: 浏览器申明自己接收的语言。
语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;
例如: Accept-Language: en-us

Transport 头域
Connection
例如: Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接
例如: Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

Entity头域
Content-Length
作用:发送给HTTP服务器数据的长度。
例如: Content-Length: 3

Content-Type
作用:WEB服务器告诉浏览器自己响应的对象的类型和字符集,
例如:
Content-Type: text/html; charset=utf-8
Content-Type:text/html;charset=GB2312
Content-Type: image/jpeg

Host(发送请求时,该报头域是必需的)
作用: 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的
例如: 我们在浏览器中输入:http://www.guet.edu.cn/index.html
浏览器发送的请求消息中,就会包含Host请求报头域,如下:
Host:http://www.guet.edu.cn
此处使用缺省端口号80,若指定了端口号,则变成:Host:指定端口号

User-Agent
作用:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本.
我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。
例如: User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E)

Cookie/Login 头域
Cookie:
作用: 最重要的header, 将cookie的值发送给HTTP 服务器

Response Header
Keep-Alive : timeout=5 ,max =1000
过期时间(失效)
最大访问次数
Secure:只能https请求

HTTP Status
2XX 成功响应
3XX 重定向
4XX 客户端错误
5XX 服务器错误

常见状态码
301 永久跳转
302 临时跳转
303 GET 重定向
400 错误请求,如语法错误
401 未授权(被发现),请求授权失败
403 禁止访问
404 找不到页面
500 服务器内部错误
502 网关错误
503 服务不可用
504 服务器超时

HTTP Cookie
会话状态管理(如用户登录状态,购物车,游戏分数和其他需要记录的信息)
个性化设置(如用户自定义设置,主题等)
浏览器行为跟踪(如跟踪分析用户行为)

设置Cookie
Set-Cookie:id = 123
Set-Cookie:id = 123;Expires=Wed,21 Oct 2017 07:28:00 GMT;
Set-Cookie:id = 123;Expires=Wed,21 Oct 2017 07:28:00 GMT;Secure;HttpOnly

Cookie的作用域
Domain 和Path指令定义了Cookie的作用域
Cookie.Domain=”douban.com”;Cookie.Path=/mine”

XSS与CSRF
XSS(会话劫持)
解决 设置为 httponly,不让js取到cookie用户信息,document.cookie 在控制台无法打印出来

防御措施
当恶意代码值被作为某一标签的内容显示:在不需要html输入的地方对html 标签及一些特殊字符( ” < > & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。
当恶意代码被作为某一标签的属性显示,通过用 “将属性截断来开辟新的属性或恶意方法:属性本身存在的 单引号和双引号都需要进行转码;对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤

CSRF (跨站伪造请求)
1, 登录受信任网站A ,并在本地生成Cookie
2,在不退出A的情况下 ,访问危险网站B
在关闭浏览器时, 不能结束一个会话
CSRF比XSS更具危险性

CSRF防御
通过 referer、token 或者 验证码 来检测用户提交。
尽量不要在页面的链接中暴露用户隐私信息。
对于用户修改删除等操作最好都使用post 操作 。
避免全站通用的cookie,严格设置cookie的域。

HTTP 常用工具
curl :
sudo apt-get install curl
curl -I 地址
curl 地址
wget:
sudo apt-get install wget
wget –wait=1 –limit-rate=200K -r -p -U Mozilla https://pip.pypa.io/en/stable/ (文件下载到同级目录)

-r      递归
-p      下载链接静态文件源

–wait=1 时间间隔
–limit-rate=200k 限制下载大小

sudo vim /etc/hosts
修改

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值