20.网络代理

一、前言

虽然网络代理算不上编程知识,但只要你使用电脑网络,那么大概率就用得上。

比如爬虫,当你过于频繁的爬取某个网站上的资源,可能就会遇到ip封禁,代理就能解决这个问题。

又比如访问github,很多时候都是无法直接访问的,这时候也可以使用代理。

本文便是简单介绍一下网络代理的基本原理与应用。

二、原理

网络代理本身的原理其实并不复杂,甚至可以说非常的简单。

比如一个最简单的网络通信如下:

graph LR
A[电脑A] -- 访问 --> B[电脑B]

这是网络编程中最基本的东西,也就是两台电脑想要通信,那么就必须知道对方的ip地址。

所以上图中电脑A想要访问电脑B上的资源(比如电脑B上挂着github网站),那么就必须要直到电脑B的ip地址,然后才能访问。

但因为一些众所周知的原因,中国大陆的ip是难以直接访问外网的,也就是此时电脑A即使知道了电脑B的地址,当依旧无法访问。

中间的线路被拦截、或者其它原因导致的访问不稳定、或者无法访问。

而代理就做了这样一件事情:找能绕开限制的计算机网络作为中转站,此时电脑A不再直接访问电脑B,而是访问代理电脑C,由代理电脑C去访问电脑B。

过程大致如下:

graph LR
A[电脑A] x--x B[电脑B]
A[电脑A]--访问-->C[代理电脑C]
C-- 访问 -->B[电脑B]

爬虫的原理也是一样的,虽然电脑B之所以可以封禁电脑A的ip地址,是因为电脑A直接访问电脑B时,能查看到电脑A的ip地址。

如果该ip地址被频繁的检测到高速访问本电脑,那电脑B自然能拒绝让该ip地址访问,而这也就是ip封禁。

而此时我们只需要找到代理,代理都是有自己独立ip的,此时我们只需要通过多个代理间隔访问电脑B,此时电脑B看到的就是不同ip连续访问,那它自然没有封禁的理由了。

同时要注意,虽然代理的原理都是一样的,但代理也是分种类的,不同种类的代理实现方案会有所区别。

比如上面两种常见的用途,最常用的就是http代理,主要就是用来代理访问网站的。

三、使用

这东西本身并不神秘,大部分人使用代理其实就是为了访问一下外网而已,比如GitHub,毕竟程序员不能使用github是非常不方便的。

目前最常使用的是clash工具,官方是英文的,不过已经有人为其做了翻译工作:Clash-for-Windows_Chinese

有了工具,下一步就是寻找代理,也常被称为机场,这就需要你自己寻找了,免费的基本不稳定,想要稳定使用,最好还是执行选择、购买一个。

价格最低在每月10元左右,如果你不看外网视频,仅仅只是访问一下技术网站,那么这个价位的流量肯定是够你用的。

比如我由于平时基本就访问个github,就直接花的30元购买的100G流量,并且是包年的,目前用了四个月也才用了20G而已。

该软件代理电脑访问的原理主要有两种,第一种是“系统代理”,就是在本机回环网络127.0.0.1:7890上进行监视。

此时如果你想要通过代理访问网站,那么你实际上是需要将请求发送到127.0.0.1:7890,然后再由该软件将请求转发到代理机器上访问网站。

一旦你在软件中开启“系统代理”功能后,这些信息都是可以直接电脑的代理设置中看到的:

image-20240109190359491

一旦的软件都会自动读取电脑的代理配置,比如浏览器,所以这些中间步骤完全无需你去手动操作。

可有些软件并不一定会去主动读取系统的代理配置,比如git常常出现访问不了github的情况,而浏览器却能正常访问,很大可能就是git此时代理出现了问题,需要你手动配置它去使用系统代理。

上面是第一种方式,也就是“系统代理”,除此之外还有第二种方式为“模拟网卡”,在clash中叫做TUN模式。

一旦开启了TUN模式,该软件就会直接为你电脑模拟出一块网卡,此时你电脑上的所有流量都必须要经过该网卡才能访问其它网络。

这种方式就属于强制性代理模式,不再需要你电脑上的软件去自己使用系统代理访问网络了。

不过这种方式虽然好,也有一定缺点,至少在我的电脑上,一旦开启了TUN模式,就会导致网站的访问缓慢无比,一旦只在某些特定软件不使用代理的情况下我才会开始TUN模式让其强制使用代理,正常情况下我一般都开启的“系统代理”模式。

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux