Proxy-Server

2023-05-16

一、摘录

这里写图片描述

二、背景

由于某些原因,在我们国内无法访问google、facebook等外国网站,如果你想使用外网来学习,聊天,那么就可以使用一些翻墙代理。

三、原理

1.要想翻墙,首先得知道墙是什么东西?墙是看不见摸不着的,其就是指访问被GFW所限制,GFW,即Great Wall of China,中国防火墙的简称,是中国政府过滤和监控互联网的一套软硬件系统。我们常常听说的被墙,就是指被防火墙挡住了。
这里写图片描述
  这里写图片描述
很明显,被中国联通封锁了。它其实就是GFW。

2.代理服务器实现的关键,就是如何避开防火墙的干扰,那么首先必须得知道防火墙的原理,其原理不外乎有三种。
(1)DNS污染与劫持
DNS污染:指服务器给你返回一个不存在的页面的IP地址。,
DNS劫持:指服务器给你返回一个伪造页面的IP地址。
一般都是电信、联通、移动对DNS服务器做手脚,给你提供它们的DNS服务器,一旦发现你访问的页面是不允许访问的,就会给你返回一个不存在的页面,从而阻挡你访问。早期的这种防火墙机制,可以使用Google的DNS(8.8.8.8),还可以使用第三方的DNS服务器,或者可以修改机器的host文件,直接拿IP进行访问。但是这些方法现在几乎没用了。
(2)对IP进行封锁
对IP进行大范围的封锁,但是一般大公司一般有很多的服务器,目前基本被封锁掉,但是全封不现实。况且有些小公司部署在第三方主机上,有可能会误伤。所以我们采用机会从国内连接到国外的VPS(VPS部署在国外,Virtual Private Server虚拟专用服务器)技术,将一台服务器分割成多个虚拟专享服务器的优质服务,简单理解VPS就是一台拥有公网的IP的服务器,进行翻墙。
(3)封锁HTTP代理
对于没有办法搭建VPS的人来说,最好的办法就是使用HTTP代理。客户端不在直接去请求目标服务器,而是去请求代理服务器,由代理服务器去代替客户端进行访问目标服务器。但是由于HTTP协议是明文协议,请求报文里就含有IP信息,所以很容易被检测出来。虽然HTTPS是加密过的,但是在连接之前需要给代理服务器发送CONNECT方法,也会带上要访问的远端IP地址信息,在出去之前还是会被拦截。
此时我们可以使用VPS搭建VPN,或者使用第三方的VPN。此时GFW虽然无法直接获取到你的加密信息,但是可以进行暴力破解,可以解决绝大多数的加密,还可以对流量进行监控,如果一个VPN地址被大量的人访问,就会引起注意。

这里写图片描述

四、socks5协议

(1)概念
SOCKS5 是一个代理协议,它在使用TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet网中的服务器。SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器, 模拟了一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务器将请求转发给真正的服务器。最后我们可以将socks5服务部署在VPS服务器上。
(2)作用
SOCKS5 协议对于处在内部网络中的机器, 需要透过网络中某些可以联通外部 Internet 的机器访问外部时,有用。与SOCKS5协议不同,HTTP代理是通过HTTP协议进行的,HTTP代理服务器软件了解通讯包的内部结构,在转发过程中还要对通讯进行某种程度的修改和转换。和HTTP代理协议不同,SOCKS5实际上是一个会话层的代理协议。位于表示层和传输层之间。Socks代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求),所以Socks代理服务器比应用层代理服务器要快。
socks协议的设计初衷是在保证网络隔离的情况下,提高部分人员的网络访问权限。
(3)附加
这个协议最初由David Koblas开发,而后由NEC的Ying-Da Lee将其扩展到版本4,最新协议是版本5,与前一版本相比,socks5做了以下增强:
1.增加对UDP协议的支持;
2.支持多种用户身份验证方式和通信加密方式;
3.修改了socks服务器进行域名解析的方法,使其更加优雅;
(4)一个应用场景
内网穿透:在大学里,学校给我们提供了很多服务器资源,我们可以在内网使用。但放寒假回家后,无法进入学校内网,也就无法连接上内网的服务器资源。解决办法:在公网的VPS上搭一个socks代理,并将内网的一台web服务器和该VPS的socks端口打通,通过这台web服务器便可以访问所有内网服务器资源。
RFC地址:
● rfc1928(URL为:http://www.ietf.org/rfc/rfc1928.txt)

五、socks5认证协议

这里写图片描述
看翻译很难受,直接看英文版吧。。。。
这里写图片描述
①当客户端连接服务端的时候,发送一个请求信息。
VER:版本号(在socks5中是0x05)
NMETHODS:在METHODS字段中出现的方法的数目;
METHODS:客户端支持的认证方式列表,每个方法占1字节。

②服务器从客户端提供的方法中选择一个最优的方法并通过以下消息通知客户端(贪心算法:双方都支持、安全性最高):
如果发送的是X’ FF’,代表不接收请求,客户端必须立即关闭。

六、请求协议

身份认证结束后,此时客户端就可以请求服务器了,让它干什么。
socks5请求格式:
这里写图片描述

VER:socks版本(在socks5中是0x05)
CMD:SOCK的命令码:
  CONNECT X’01’
  BIND X’02’
  UDP ASSOCIATE X’03’

RSV:保留字段
ATYP:地址类型:
  IP V4地址: X’ 01’
  域名地址: X’ 03’
  IP V6地址: X’ 04’
DST.ADDR:目的地址
DST.PORT:目的端口

七、回应协议

收到客户端的请求后,服务器对其进行回应。
这里写图片描述

附录:
VPN和VPS的区别:
  我们可以把VPS理解为服务器。一台服务器用软件分割开以后,就成了多台服务器,他们有独立的操作系统,具有独立的IP,这个时候每一个小的独立操作系统,就是一个VPS。也可以理解为,VPS就是一个配置低了点的服务器。

  VPN是一个软件。用一个帐号和密码,我们登陆了以后,我们的机器访问网站或者是上QQ或者是登陆一些网络软件的时候,所显示的和使用的IP都是国外的。也就是说,VPN是一个可以让我们的机器直接连接到国外的网线上的东西。VPN分为两种,一种是静态的VPN,另外一种就是动态的VPN。动态的VPN是每登陆一次,就变化一次IP的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Proxy-Server 的相关文章

  • Angular2/Angular 种子 http-proxy-middleware 代理 api 请求

    我正在使用角种子项目 https github com mgechev angular seed tree master tools并尝试为在不同端口上运行的后端服务的 api 请求设置代理 到目前为止我的代码 Add proxy midd
  • 如果 OSX/iOS 中的网络代理设置发生更改,是否有办法接收通知/回调?

    如果 OSX iOS C C 或 Objective C 中的网络代理设置发生更改 我想收到通知 回调吗 有人有关于如何执行此操作的示例吗 监控系统配置SCDynamicStoreSetNotificationKeys 对于您需要注意的按键
  • Paramiko 服务器:向客户端发出 stdout 已关闭的信号

    尝试在中实现测试服务器paramiko 无需修改客户端进行测试 我偶然发现了如何关闭的问题stdout流 使 stdout read 不会永远挂起 而不会在客户端的级别太低 到目前为止 我已经能够通过以下方式传达已完成的命令 简单文本输出到
  • 检测默认网络浏览器的代理设置

    MSDN样本 HttpWebRequest myWebRequest HttpWebRequest WebRequest Create http www microsoft com WebProxy myProxy new WebProxy
  • Maven 对特定存储库使用 SOCKS 代理

    我试图将 Maven 配置为在访问特定存储库时使用袜子代理 但不将其用于 Maven 中央存储库 我用过export MAVEN OPTS DsocksProxyHost
  • github 存储库的本地缓存?

    我们使用 github 来管理我们的大量软件环境 我敢打赌 像许多其他组织一样 该存储库的绝大多数流量来自我们的办公室 考虑到这一点 有没有一种方法可以构建给定 github 存储库的本地缓存 但仍然具有云版本的保护 我在缓存代理服务器的模
  • 使用 NodeJs 的简单代理服务器

    目前我已经使用 Apache 设置了一个简单的代理 ProxyPass ext https ext a nice url at ProxyPassReverse ext https ext a nice url at 它工作正常 但为了让其
  • 错误:连接超时:连接

    我将Android Studio 1 5 1的gradle版本从1 5更改为2 10 然后单击立即同步 错误图像 https i stack imgur com E3MVE png但出现以下错误 错误 连接超时 连接 如果您使用 HTTP
  • Firefox 中的代理设置不会“粘连”

    在家里我们有一个代理服务器 在工作中我们不会 Firefox 在这方面令人恼火 每当我启动它时 它都会默认使用代理服务器 如果我执行 工具 gt 选项 gt 设置 并选择 无代理 则没有问题 但是 如果我关闭 Firefox 并重新启动它
  • yum update / apk update / apt-get update 在代理后面不起作用

    我使用代理 无法构建 Docker 映像 我尝试过FROM ubuntu FROM centos and FROM alpine but apt get update yum update apk update failed 我的主机操作系
  • 如何在 Nodejs 中创建代理下载

    我想创建一个nodejs服务器 它充当下载文件的代理 即用户点击 在下载按钮上 从nodejs服务器调用get nodejs服务器从不同的服务器获取链接 远程服务器并开始下载 以 TB 为单位 然后将该下载转发给用户 TB 文件不应存储在
  • 在 selenium webdriver 中使用 phantomjs 代理

    我正在尝试在 selenium webdriver 2 25 的 ruby 1 8 7 脚本中使用 PhantomJS 1 9 1 配置代理 我看到了一些使用 Firefox 的例子 我用这个浏览器成功地做到了 我使用了这段代码 profi
  • 如何关闭 Grizzly 日志记录?

    如何关闭 Grizzly 的日志记录 我想关闭以下日志记录 Okt 18 2018 8 42 24 AM org glassfish grizzly http server NetworkListener start INFORMATION
  • Rails 的 Puma Systemd 配置不起作用

    我已经完成了一个使用 Ruby on Rails 构建的应用程序 现在我想将其托管在 AWS 上的 EC2 实例上 我已经为其配置了服务器 并且正在使用pumaHTTP服务器作为应用服务器 在生产中启动应用程序总是需要我运行RAILS EN
  • 使用单个“proxyServer”将 Websocket 代理到多个目标

    我正在开发一个nodeJS websocket代理服务器 用例是当 websocket 请求到来时 我将检查其凭据 添加新标头 然后根据其组 来自用户 ID 将 websocket 连接重定向到其目标 webscoket 服务器 我发现大多
  • C#中如何通过Proxy访问互联网

    我正在使用 C 设计一个 Windows 窗体应用程序 当连接到互联网时 该应用程序可以顺利执行其功能 但当我们在学院尝试该应用程序时 真正的问题就开始了 我们的学院使用代理网关连接到网络 代理服务器是192 168 120 5和代理端口8
  • 配置 PIP 以在代理后面工作

    我已经安装了 python 3 4 3 附带pip 我想从代理后面使用 pip 所以我执行了以下操作 Created C Users foo pip pip ini并添加了代理配置部分 proxy export http proxy my
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • 从 cocoa 编辑系统偏好设置

    有没有办法使用可可以编程方式编辑系统首选项 是否需要一些框架 我需要这样做来更改全局代理设置 另外 我的应用程序是沙盒的 有关于如何执行此操作的示例代码吗 感谢您的帮助 您正在寻找系统配置框架 但这并不容易 我认为沙盒应用程序不可能这样做
  • 具有代理设置的 Android 模拟器 - 致命错误:.//android/base/sockets/ 检查失败:isValidFd(fd)。 FD 1404 最大1024

    需要使用代理设置运行模拟器 我在命令提示符中使用以下命令来启动模拟器 emulator avd AVD for 3 7 WVGA Nexus One http proxy http username password IP Port 如果没

随机推荐

  • C语言笔记1

    假定程序运行环境为VC6 0 xff0c 缺省为四字节对齐 xff0c CPU xff08 32小字节序处理器 xff09 1 char x 61 34 ab0defg 34 char y 61 39 a 39 39 b 39 39 0 3
  • 【C++三大特性】继承

    如有疑问 xff0c 欢迎讨论 xff0c QQ xff1a 1140004920 一 继承的概念 1 原有的类为基类 xff0c 又称父类 xff0c 对基类进行扩展产生的新类称为派生类 xff0c 又称子类 xff0c 继承可以使代码复
  • C++实现顺序表及双向链表

    顺序表 include lt iostream gt include lt assert h gt using namespace std typedef int DataType class SeqList public 默认的构造函数
  • 二叉树

    一 二叉树 是结点的一个有限集合 xff0c 每个根结点最多只有两颗子树 xff0c 二叉树有左右之分 xff0c 子树的次序不能颠倒 二 二叉树的种类 1 满二叉树 xff1a 每个结点都有左右子树 xff0c 且叶结点都在同一层 2 完
  • 进程间通信----管道、消息队列、共享内存、信号量

    一 进程间通信 xff08 Inter Process Communication xff09 1 目的 1 数据传输 2 资源共享 3 通知事件 4 进程控制 注 xff1a 每个进程都有各自不同的用户地址空间 xff0c 进程之间要交换
  • 进程基本概念、进程地址空间

    强调内容今天来谈一谈进程的一些基本概念 xff0c 认识一些进程状态 xff0c 重新认识一下程序地址空间 xff08 进程地址空间 xff09 xff0c 进程调度算法 xff0c 环境变量等属性 一 进程 1 什么是进程 xff1f 程
  • 何为缓存?

    一 缓存 xff08 cache xff09 1 概念 xff1a 数据交换的缓冲区 xff08 称作Cache xff09 缓存是一块内存芯片 xff0c 具有极快的存取速率 xff0c 它是硬盘内部存储和外界接口之间的缓冲器 xff0c
  • 计算机的组成

    一 冯诺依曼系统 1 计算机硬件 由运算器 控制器 存储器 输入设备 输出设备组成 2 计算机内部采用二进制表示指令和数据 3 注 xff1a 1 输入设备 xff1a 键盘和鼠标等 2 输出设备 xff1a 显示屏 xff0c 打印机等
  • fd与FILE以及fork缓冲问题

    一 文件描述符 fd 1 文件描述符其实就是一个非负的小整数 是文件指针数组的下标 2 让我们看一看0 xff0c 1 xff0c 2 xff0c 代表什么 xff1f span class hljs preprocessor includ
  • Kali Linux使用体验简述

    在以前的版本里Kali Linux默认用户是root用户 xff0c 这样设计的目的是避免每次都要输入root密码 xff0c 而如今需要root密码的程序明显少于从前 xff0c Kali Linux也做出了相应的改革 xff0c 默认用
  • 随身WiFi410的板子刷Debian安装青龙面板+狗东脚本最详细教程

    前几天 xff0c 我发布了一个410刷入debian的教程 很多老哥可能觉得刷入debian没有什么用 xff0c 今天我就教大家如何安装青龙面板 xff0c 并且安装脚本实现自动白嫖狗东的豆子 青龙面板 43 狗东脚本 自动领豆子红包
  • inode以及软硬链接

    一 inode 使用ls l查看文件元数据 xff0c 用来描述数据属性 模式 硬链接数 文件所有组 组 大小 最后修改时间 文件名 使用stat查看 xff0c 查看文件信息 span class hljs comment Access
  • 静态库与动态库

    一 库 由于版权原因 xff0c 库函数的源代码一般是不可见的 xff0c 但在暴露的头文件中你可以看到它对外的接口 库函数简介 xff0c 使用的时候 xff0c 直接引入头文件 include lt gt 即可 二 静态库 1 概念 程
  • 【进程控制上】创建、终止、等待、程序替换

    进程的创建 终止 等待 程序替换 以及popen system与fork之间的区别 一 进程的创建 init进程将系统启动后 xff0c init将成为此后所有进程的祖先 xff0c 此后的进程都是直接或间接从init进程 复制 而来 完成
  • 【进程控制下】实现一个简易的shell

    1 shell原理 运用程序替换的原理来实现的 xff0c shell自己就是一个进程 span class hljs number 1 span 获取命令行 span class hljs number 2 span 解析命令行 span
  • VIM的基本使用

    一 VIM 1 概念 是一款文本编辑器 xff0c 和Emacs并列成为类Unix系统用户最喜欢的文本编辑器 2 优点 可以完成复杂的编辑与格式化功能 3 模式 其模式共有十二种 xff0c 基本模式有六种 span class hljs
  • 进程信号

    一 信号概念 1 一个信号产生及处理实例 1 在shell下 xff0c 启动一个进程 2 按下Ctrl 43 c xff0c 键盘输入产生一个硬件中断 3 如果CPU正在运行这个进程则代码暂停执行 xff0c CPU从用户态返回到内核态
  • 进程间关系和守护进程

    一 进程间关系 1 进程组 xff08 Process Group xff09 1 xff09 是一个或多个进程的集合 xff0c 通常 xff0c 这个集合与同一个作业相关联 xff0c 可以接受同一终端的各种信号 2 xff09 每一个
  • 多线程死锁

    一 死锁 1 xff09 提出 多线程与多进程提高了系统资源的利用率 xff0c 然而并发执行也会带来一些问题 xff0c 如死锁 2 xff09 概念 死锁是指两个或两个以上的进程在执行过程中 xff0c 由于竞争资源或者由于彼此通信而造
  • Proxy-Server

    一 摘录 二 背景 由于某些原因 xff0c 在我们国内无法访问google facebook等外国网站 xff0c 如果你想使用外网来学习 xff0c 聊天 xff0c 那么就可以使用一些翻墙代理 三 原理 1 要想翻墙 xff0c 首先