爬虫基础

爬虫基础

1 HTTP基本原理

2 网页基础

3 爬虫的基本原理

4 会话和Cookies

5 代理的基本原理

在这里插入图片描述

1 HTTP基本原理

1.1 URI和URL

URI(Uniform Resource Identifier):统一资源标志符
URL(Universal Resource Locator):统一资源定位符
URN(Universal Resource Name):统一资源名称。URN只命名资源而不指定如何定位资源。

URL和URI的关系:
URI包括 URL 和 URN

1.2 超文本

其英文名称叫作hypertext,我们在浏览器里看到的网页就是超文本解析而成的,其网页源代码是一系列HTML代码,里面包含了一系列标签,比如img显示图片,p指定显示段落等。浏览器解析这些标签后,便形成了我们平常看到的网页 ,而网页的源代码HTML就可以称作超文本。

1.3 HTTP和HTTPS

HTTP的全称是Hyper Text Transfer Protocol,中文名叫作超文本传输协议。HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确地传送超文本文档。HTTP由万维网协会和Internet工作小组IETF(Internet Engineering Task Force)共同合作制定的规范。

HTTPS的全称是Hyper Text Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP通道。简单讲是HTTP的安全版,即HTTP下加入SSL层,简称为HTTPS。

1.4 HTTP请求过程

我们在浏览器中输入一个URL,回车之后便会在浏览器中观察到页面内容。实际上,这个过程是浏览器向网站所在的服务器发送了一个请求,网站服务器接收到这个请求后进行处理和解析,然后返回对应的响应,接着传回给浏览器。响应里包含了页面的源代码等内容,浏览器再对其进行解析,便将网页呈现了出来。
模型
此处客户端即代表我们自己的PC或手机浏览器,服务器即要访问的网站所在的服务器

打开Chrome浏览器,右击并选择“检查”项,即可打开浏览器的开发者工具。这里访问百度http://www.baidu.com/,输入改URL后回车,观察这个过程中发生了怎样的网络请求。可以看到,在Network页面下方出现了一个个的条目,其中一个条目就代表一次发送请求和接受响应的过程。
其中:
第一列 Name:请求的名称,一般会将URL的最后一部分内容当做名称。
第二列 Status:响应的状态码,这里显示200,代表响应是正常的。通过状态码,我们可以判断发送了请求之后是否得到了正常的响应
第三列Type:请求的文档类型。这里为document,代表我们这次请求的是一个HTML文档,内容就是一些HTML代码。
第四列Initator:请求源。用来标记请求是由哪个对象或进程发起的。
第五列:Size。从服务器下载的文件和请求的资源大小,如果是从缓存中取得的资源,则改列会显示from cache
第六列:Time:发送请求到获取响应所用的总时间
第七列 Waterfall:网络请求的可视化瀑布流。

点击某一个条目,既可以看到更详细的信息
1 General部分:
Request URL为请求的URL,Request Method为请求的方法,Status Code为响应状态码,Remote Address为远程服务器的地址和端口, Referrer Policy为Referrer判别策略
2 Response Headers:响应头,例如其中包含了服务器的类型、文档类型、日期等信息,浏览器接受到响应后,会解析响应内容,进而呈现网页内容。
3 Request Headers:请求头,里面有许多请求信息,例如浏览器标识、Cookies、Host等信息。这是请求的一部分,服务器会根据请求头内的信息判断请求是否合法,进而做出对应的响应。

1.4.1 请求

请求,由客户端向服务端发出,可以分为4部分内容:请求方法(Request Method)、请求的网址(Request URL)、请求头(Request Headers)、请求体(Request Body)。

1.4.1.1 请求方法

常见的请求方法有两种:GET 和 POST

GET和POST请求方法有如下区别
a:GET请求中的参数包含在URL里面,数据可以在URL中看到,而POST请求的URL不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中。
b:GET请求提交的数据最多只有1024字节,而POST方式没有限制。
一般来说,登录时,需要提交用户名和密码,其中包含了敏感信息,使用GET方式请求的话,密码就会暴露在URL里面,造成密码泄露,所以这里最好以POST方式发送。上传文件时,由于文件内容比较大,也会选用POST方式。

其他请求方式简介

1.4.1.2 请求的网址

请求的网址,即统一资源定位符URL,它可以唯一确定我们想请求的资源

1.4.1.3 请求头

请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent等。下面简要说明一些常用的头信息。
Accept:请求报头域,用于指定客户端可接受哪些类型的信息。
Accept-Language:指定客户端可接受的语言类型
Accept-Encoding:指定客户端可接受的内容编码。
Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置。从HTTP1.1版本开始,请求必须包含此内容。
Cookie:也常用复数形式Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是Cookies的功劳。Cookies里有信息标识了我们所对应的服务器,服务器通过Cookies是被出事我们自己,并且查出当前状态是登录状态,所以返回结果就是登陆之后才能看到的网页内容。
Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计、防盗链处理等。
User-Agent:简称UA,它是一个特殊的字符头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能会被识别出爬虫哦。
Content-Type:也叫互联网媒体类型(Internet Media Type)或者MIME类型,在HTTP协议消息头中,它用来表示具体请求中的媒体类型信息。例如,text/html代表HTML格式。
image/gif代表GIF图片,application/json代表JSON类型……

1.4.1.4 请求体

请求体一般承载的内容是POST请求中的表单数据,而对于GET请求,请求体为空。

1.4.2 响应

响应,由服务器返回给客户端,可以分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)和响应体(Response Body)

1.4.2.1 相应状态码

响应状态码表示服务器的响应状态,如
200代表服务器正常响应
404代表页面未找到
500代表服务器内部发生错误
在爬虫中,我们可以根据状态码来判断服务器相应状态

1.4.2.2 响应头

响应头包含了服务器对请求的应答信息,如Content-Type、Server、Set-Cookie等。下面简要说明一些常用的头信息
Date:标识相应产生的时间
Last-Modified:指定资源的最后修改时间
Content-Encoding:指定相应内容的编码
Server:包含服务器的信息,比如名称、版本号等
Content-Type:文档类型,指定返回的数据类型时什么,如text/html 代表返回HTML文档,application/x-javascript则代表返回JavaScript文件,image/jpeg则代表返回图片。
Set-Cookie:设置Cookies。响应头中的Set-Cookie 告诉浏览器需要将此内容放在Cookies中,下次请求携带Cookies请求。
Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短加载时间。

1.4.2.3 响应体

最重要的当属响应体的内容了。响应的正文数据都在响应体中,比如请求网页时,它的响应体就是网页的HTML代码;请求一张图片时,它的响应体就是图片的二进制数据。我们坐爬虫请求网页后,要解析的内容就是响应体。
在浏览器开发者工具中点击Preview,就可以看到网页的源代码,也就是响应体的内容,它是解析的目标。
在做爬虫时,我们主要通过响应体得到网页的源代码、JSON数据等,然后从中做相应的提取。

2 网页基础

2.1 网页的组成

网页可以分为三大部分——HTML、CSS、JavaScript。如果把网页比作一个人的话,HTML相当于骨架,JavaScript相当于肌肉,CSS相当于皮肤,三者结合起来才能形成一个完善的网页。

2.1.1 HTML

HTML是用来描述网页的一种语言,其全称叫做Hyper Text Markup Language, 即超文本标记语言。网页包括文字、按钮、图片和视频等各种复杂的元素,其基础架构就是HTML。就是由各种标签嵌套组合而成的。这些标签定义的节点元素相互嵌套和组合形成了复杂的层次关系,就形成了网页的架构。

2.1.2 CSS

CSS全称叫做Cascading Style Sheets, 即层叠样式表。“层叠”是指当在HTML中引用了数个样式文件,并且样式发生冲突是,浏览器能依据层叠顺序处理。“样式”指网页中文字大小、颜色、元素间距,排列等格式。
CSS是目前唯一的网页页面排版样式标准,有了它的帮助,页面才会变得更为美观。

2.1.3 JavaScript
简称JS,是一种脚本语言。HTML和CSS配合使用,提供给用户的只是一种静态信息,缺乏交互性。我们在网页里可能会看到一些交互和动画效果,如下载进度条、提示框、轮播图等,这通常就是JavaScript的功劳。他的出现使得用户与信息之间不只是一种浏览与显示的关系,而是实现了一种实时、动态、交互的页面功能。

2.2 网页的结构

网页的结构源代码1
网页运行效果

2.3 节点树及节点间的关系

在HTML中,所有标签定义的内容都是节点,他们构成了一个HTML DOM树
我们先看一下什么是DOM。DOM是W3C(万维网联盟)的标准,其英文全称Document Object Model,即文档对象模型。它定义了访问HTML和XML文档的标准:
W3C文档对象模型(DOM)是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。
W3C DOM标准被分为3个不同的部分
核心 DOM:针对任何结构化文档的标准模型。
XML DOM:针对XML文档的标准模型。
HTML DOM:针对HTML文档的标准模型。

根据W3C的HTML DOM标准,HTML文档中的所有内容都是节点
整个文档是一个文档节点。
每个HTML元素是元素节点。
HTML元素内的文本是文本节点。
每个HTML属性是属性节点。
注释时注释节点。

HTML DOM将HTML文档视作树的结构,这种结构被称为节点树
节点树
通过HTML DOM,树中的所有节点均可通过JavaScript访问,所有HTML节点元素均可被修改,也可以被创建或删除。
节点树中的节点彼此拥有层级关系。我们常用父(parent)、子(child)和兄弟(sibling)等术语描述这些关系。父节点拥有子节点,同级的子节点被称为兄弟节点。

2.4 选择器

我们知道网页时有一个个节点组成,CSS选择器会根据不同的节点设置不同的样式规则。在CSS当中我们用CSS选择器来定位节点。
CSS选择器语法规则
选择器
在这里插入图片描述
在这里插入图片描述

3 爬虫的基本原理

我们可以把互联网比作一张大网,而爬虫便是在网上爬行的蜘蛛。把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了信息。可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,网站的数据就可以被抓取下来了。

3.1 爬虫概述

简单说,爬虫就是获取网页并提取和保存信息的自动化程序。

3.1.1 获取网页

爬虫首先要做的工作就是获取网页,这就是获取网页的源代码。源代码里包含了网页的部分有用信息,所以只要把源代码或取下来,就可以从中提取想要的信息了。
前面讲了请求和相应的概念,向网站服务器发送一个请求,返回的响应体便是网页源代码。所以,最关键的部分就是构造一个请求发送给服务器,然后接收到响应并将其解析出来。
python中提供了许多库来帮助我们实现这个操作,如urllib、requests等。我们可以用这些库来帮助我们实现HTTP请求操作,请求和响应都可以用类库提供数据结构来表示,得到响应之后只需要解析数据结构中的Body部分即可,即得到网页的源代码。

3.1.2 提取信息

获取网页源代码后,接下来就是分析网页源代码,从中提取我们想要的数据。首先,最通用的方法便是采用正则表达式提取,这是一个万能的方法,但是在构造正则表达式时比较复杂且容易出错。
另外,有一定的规则,所以还有一些根据网页节点属性、CSS选择器或XPath来提取网页信息的库,如Beautiful Soup、pyquery、lxml等。使用这些库,我们可以高效快速地从中提取网页信息,如节点的属性、文本值等。

3.1.3 保存数据

提取信息后,我们一般会将提取到的数据保存到某处以便后续使用。这里保存的形式有多种多样,如可以简单保存为TXT文本或JSON文本,也可以保存到数据库,如MySQL和MongoDB等,也可以保存至远程服务器,如借助SFTP进行操作等。

3.1.4 自动化程序

说到自动化程序,意思是说爬虫可以代替人来完成这些操作。首先,我们手工当然可以提取这些信息,但是当量特别大或者像快速获取大量数据的话,肯定还是要借助程序。爬虫就是代替我们来完成爬取工作的自动化程序,它可以在抓取过程中进行各种异常处理、错误重试等操作,确保爬取高效地进行。

3.2 能抓取怎样的数据

HTML源代码
JSON字符串(其中API接口大多采用这种形式。这种形式的数据方便传输和解析)
二进制数据:比如图片、视频和音频等(我们可以将这些二进制数据抓取下俩,然后保存成对应的文件名)
还可以抓取各种扩展名的文件,css,javascript和配置文件等
上述内容其实都对应各自的URL,是基于HTTP或HTTPS协议的,只要是这种数据,爬虫都可以抓取。

3.3 JavaScript渲染页面

有时候,我们在用urllib或requests抓取网页时,得到的源代码实际和浏览器中看到的不一样。
这是一个非常常见的问题。现在网页越来越多地采用Ajax、前端模块化工具来构建,整个网页可能都是有JavaScript渲染出来的,也就是说原始的HTML代码就是一个空壳。

4 会话和Cookies

在浏览网站的过程中,我们经常会遇到需要登录的情况,有些页面只有登录之后才可以访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就需要重新登录。还有一些网站,在打开浏览器时就自动登录了。而且很长时间都不会失效,这种情况又是为什么?其实这里面涉及会话(Session)和(Cookies)的相关知识

4.1 静态网页和动态网页

上面的网页源代码1,我们将其保存为一个 .html 文件,然后把它放在某台具有固定公网IP的主机上,主机上装上Apache或Nginx等服务器,这样这台主机就可以作为服务器了,其他人便可以通过访问服务器看到这个页面,这就搭建了一个最简单的网站。
这种网页的内容是HTML代码编写的,文字、图片等内容均通过写好的HTML代码来指定,这种页面叫作静态网页。它加载速度快,编写简单,但是存在很大的缺陷,如可维护性差,不能根据URL灵活多变地显示内容等。例如,我们想要给这个网页的URL传入一个name参数,让其在网页中显示出来,是无法做到的。
因此动态网页应运而生,它可以动态解析URL中参数的变化,关联数据库并动态呈现不同的页面内容,非常灵活多变。我们现在遇到的大多数都是动态网站,他们不再是一个简单的HTML,而是可能由JSP、PHP、Python等语言编写的,其功能比静态网页强大和丰富太多了。
此外,动态网站还可以实现用户登录和注册的功能。再回到开头提到的问题,很多页面时需要登录之后才可以查看的。按照一般的逻辑来说,输入用户名和密码登录之后,肯定是拿到了一种类似凭证的东西,有了它,我们才能保持登录状态,才能访问登录之后才能看到的页面。
其实它就是会话(Session)和Cookies共同产生的结果。

4.2 无状态HTTP

在了解会话和Cookies之前,我们还需要了解HTTP的一个特点,叫做无状态
HTTP的无状态是指HTTP协议对事务处理是没有记忆能力的,也就是服务器不知道客户端是什么状态。当我们服务器发送请求后,服务器解析次请求,然后返回对应的响应,服务器负责完成这个过程,而且这个过程是完全独立的,服务器不会记录前后状态的变化,也就是缺少状态记录。这意味着如果后续需要处理前面的信息,则必须重传,这导致需要额外传递一些前面的重复请求,才能获取后续响应,然而这种效果显然不是我们想要的,为了保持前后状态,我们肯定不能将前面的请求全部重传一次,这太浪费资源了,对于这种需要用户登录的页面来说,更是棘手。
这时两个用于保持HTTP连接状态的技术就出现了,它们分别是会话和Cookies。会话在服务端,也就是网站的服务器,用来保存用户的会话信息;Cookies在客户端,也可以理解为浏览器端,有了Cookies,浏览器再下次访问网页时会自动附带上它发送给服务器,服务器通过识别Cookies并鉴定出是哪个用户,然后再判断用户是否登录状态,然后返回对应的响应。
我们可理解为Cookies里面保存了登录的凭证,有了它,只需要在下次请求携带Cookies发送请求而不必重新输入用户名、密码等信息重新登录了。
因此在爬虫中,有时候处理需要登录才能访问的页面时,我们一般会直接将登录成功后获取的Cookies放在请求头里面直接请求,而不必重新模拟登录。

接下来,我们详细剖析他们的原理:

4.2.1 会话

会话,其本来的含义是指有始有终的一系列动作/消息。比如,打电话时,从拿起电话拨号到挂断电话这中间的一系列过程可以称为一个会话。
而在Web中,会话对象用来存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在会话对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个会话对象。当会话过期或被放弃后,服务器将终止该会话。

4.2.2 Cookies

Cookies指某些网站为了辨别用户身份、进行会话跟踪而存储在用户本地终端上的数据。

4.2.2.1 会话维持

我们怎样利用Cookies保持状态呢?当客户端第一次请求服务器时,服务器会返回一个请求头带有Set-Cookie字段的响应给客户端,用来标记是哪一个用户,客户端浏览器会把Cookies保存起来。当浏览器下一次再请求该网站时,浏览器会把此Cookies放到请求头一起提交给服务器,Cookies携带了会话ID信息,服务器检查该Cookies即可找到对应的会话是什么,然后再判断会话来以此辨认用户状态。
在成功登录某个网站时,服务器告诉客户端设置哪些Cookies信息,在后续访问页面时客户端会把Cookies发送给服务器,服务器再找到对应的会话加以判断。如果会话中的某些设置登录状态的变量是有效的,那就证明用户处于登录状态,此时返回登录之后才可以查看的网页内容,浏览器再进行解析便可以看到了。
反之,如果传给服务器的Cookies是无效的,或者会话已经过期了,我们将不能继续访问页面,此时可能会收到错误的响应或者跳转到登录页面重新登录。
所以,Cookies和会话需要配合,一个处于客户端,一个处于服务端,二者共同协作,就实现了登录会话控制。

4.2.2.2 属性结构

接下来,我们来看看Cookies都有哪些内容。
输入URL:https://www.zhihu.com/
在浏览器开发者工具中打开Application选项卡,然后在左侧会有一个Storage部分,最后一项即为Cookies,将其点开,这些就是Cookies。
可以看到,这里有很多条目,其中每个条目可以成为Cookies。
Name:该Cookie的名称。一旦创建,该名称便不可更改
Value:该Cookie的值。如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用BASE64编码。
Domain:可以访问改Cookie的域名。例如,如果设置为.zhihu.com,则所有以zhihu.com结尾的域名都可以访问该Cookies、
Max Age:该Cookie失效的时间,单位为秒,也常和Expires一起使用,通过它可以计算出其有效时间。Max Age如果为正数,则该Cookie在Max Age秒之后失效。如果为负数,则关闭浏览器时Cookie即失效,浏览器也不会以任何形式保存该Cookie。
Path:该Cookie的使用路径。如果设置为/path/,则只有路径为/path/的页面可以访问该Cookie。如果设置为/,则本域名下的所有页面都可以访问该Cookie。
Size字段:此Cookie的大小
HTTP字段:Cookie的httponly属性。若此属性为true,则只有在HTTP头中带有此Cookie的信息,而不能通过document.cookie来访问此Cookie。
Secure:该Cookie是否仅被使用安全协议传输。安全协议有HTTPS和SSL等,在网络上传输数据之前先将数据加密。默认为false。

4.2.2.3 会话Cookie和持久Cookie

从表面意思来说,会话Cookie就是把Cookie放在浏览器内存里,浏览器再关闭之后该Cookie即失效;持久Cookie则会保存到客户端的硬盘中,下次还可以继续使用,用于长久保持用户登录状态。
其实严格来说,没有会话Cookie和持久Cookie之分,只是由Cookie的Max Age或Expires字段决定了过期的时间。
因此,一些持久化登录的网站就是把Cookie的有效时间和会话有效期设置得比较长,下次我们再访问页面时仍然携带之前的Cookie, 就可以直接保持登录状态。

5 代理的基本原理

我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如403Forbidden,这时候打开网页一看,可能会看到“您的IP访问频率太高”这样的提示。出现这种现象的原因是网站采取了一些反爬虫措施。比如,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,这种情况可以称为封IP。
既然服务器检测的是某个IP单位时间的请求次数,那么借助某种方式来伪装我们的IP,让服务器识别不出是由我们本机发起的请求,不就可以成功防止封IP了吗?
一种有效的方式就是使用代理,后面会详细说明代理的用法。在这之前先了解一下代理的基本原理,它是怎样实现IP伪装的呢?

5.1 基本原理

代理实际上指的就是代理服务器,英文:proxy server,它的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站。在我们正常请求一个网站时,是发送了请求给Web服务器,Web服务器把相应传回给我们。如果设置了代理服务器,实际上就是在本机和服务器之间搭建了一个桥,此时本机不是直接向Web服务器发起请求,而是想代理服务器发出请求,请求会发送给代理服务器,然后由代理服务器再发送给Web服务器,接着由代理服务器再把Web服务器返回的响应转发给本机。这样我们同样可以正常访问网页,但这个过程中Web服务器识别出的真实IP就不再是我们本机的IP了,就成功实现了IP伪装,这就是代理的基本原理。

5.2代理的作用

a:突破自身IP访问限制,访问一些平时不能访问的站点。
b:访问一些单位或团体内部资源:比如使用教育网内地址免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。
c:提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度。
d:隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。对于爬虫来说,我们用代理就是为了隐藏自身IP,防止自身IP被封锁。

5.3 爬虫代理

对于爬虫来首,由于爬虫爬取速度过快,在爬取过程中可能遇到同一个IP访问过于频繁的问题,此时网站就会让我们输入验证码登录或者直接封锁IP,这样会给爬取带来极大的不便。
使用代理隐藏真实的IP,让服务器误以为是代理服务器在请求自己。这样在爬取过程中通过不断更换代理,就不会被封锁,可以达到很好的爬取效果。

5.4 代理分类

代理分类是,即可以根据协议区分,也可以根据其匿名程度区分。

5.4.1 根据协议区分

a:FTP代理服务器:主要用于访问FTP服务器,一般有上传、下载以及缓存功能,端口一般为21、2121等。
b:HTTP代理服务器:主要用于访问网页,一般有内容过滤和缓存功能,端口一般为80、8080、3128等
c:SSL/TLS代理:主要用于访问加密网站,一般有SSL或TLS加密功能(最高支持128位加密强度,端口一般为443)
d:RTSP代理:主要用于访问Real流媒体服务器,一般有缓存功能,端口一般为554。
e:Telnet代理:主要用于POP3/SMTP方式收发邮件,一般有缓存功能,端口一般为110/25.
f:SOCKS代理:知识单纯传递数据包,不关心具体协议和用法,所以速度快很多,一般有缓存功能,端口一般为1080。SOCKS代理协议又分为SOCKS4和SOCKS5,前者只支持TCP而后者支持TCP和UDP,还支持各种哦身份验证机制、服务器端域名解析等。简单来说,SOCKS4能做到的SOCKS5都可以做到,但SOCKS5能做到的SOCKS4不一定能做到。

5.4.2 根据匿名程度区分

a:高度匿名代理:会将数据包原封不动地转发,在服务器端看来就好像真的是一个普通客户端在访问,而记录的IP是代理服务器的IP。
b:普通匿名代理:会在数据包上做一些改动,服务端上有可能发现这是个代理服务器,也有一定几率追查到客户端的真实IP。代理服务器通常会加入的HTTP头有HTTP_VIA和HTTP_X_FORWAREDE_FOR。
c:透明代理:不但改动了数据包,还会告诉服务器客户端的真实IP。这种代理除了能用缓存技术提高浏览速度,能用内容过滤提高安全性之外,并无其他显著作用,最常见的例子是内网中的硬件防火墙。
d:间谍代理:指组织或个人创建的用于记录用户传输的数据,然后进行研究、监控等目的的代理服务器。

5.5 常见代理设置

a:使用网上免费代理:最好使用高匿代理,另外可用的代理不多,需要在使用前筛选一下可用代理,也可以进一步维护一个代理池。
b:使用付费代理服务:互联网上存在许多代理商,可以付费使用,质量比免费代理好很多。
c:ADSL拨号:拨一次号换一次IP,稳定性高,也是一种比较有效的解决方案。
在后文我们会详细介绍这几种代理的使用方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值