当前位置:网站首页 > 技术博客 > 正文

如何搭建socks5代理服务器



socks是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。根据OSI七层模型来划分,SOCKS属于会话层协议,位于表示层与传输层之间。

当防火墙后的客户端要访问外部的服务器时,就跟socks代理服务器连接。该协议设计之初是为了让有权限的用户可以穿过过防火墙的限制,使得高权限用户可以访问外部资源。经过10余年的时间,大量的网络应用程序都支持socks5代理。

这个协议最初由DavidKoblas开发,而后由NEC的Ying-DaLee将其扩展到版本4,最新协议是版本5,与前一版本相比,socks5做了以下增强:

  • 增加对UDP协议的支持;
  • 支持多种用户身份验证方式和通信加密方式;
  • 修改了socks服务器进行域名解析的方法,使其更加优雅;

参考:https://www.digitalocean.com/community/tutorials/how-to-set-up-dante-proxy-on-ubuntu-20-04

验证:

配置文件路径:

重启服务:

使用SSH

  1. 使用动态端口转发将目标机器作为本机的代理
  1. 设置浏览器代理

以火狐浏览器为例:

image.png
image.png
  1. 测试
image.png
image.png

可以看到,显示的ip已经为目标服务器的ip了。

:::tip{title="提示"} 此方法其实不需要目标服务器安装代理软件,属于ssh使用的一个技巧,可以临时使用。 :::

使用Proxifier

  1. 下载安装proxifier

:::info{title="proxifier介绍"} Proxifier是一款代理客户端软件,可以让不支持代理服务器工作的程序变的可行。支持各种操作系统和各代理协议,它的运行模式可以指定端口,指定程序的特点。 ::: 下载地址: https://www.proxifier.com/

  1. 添加代理服务器
image.png
image.png
image.png
image.png
  1. 添加规则
image.png
image.png
image.png
image.png
  1. 测试
  • 查看出口ip
image.png
image.png

可以看到已经在走代理服务器的流量

  • 通过代理登录服务器

能登录上,说明配置成功。

  1. 安装

:::info{title="ProxyChains介绍"} ProxyChains是Linux和其他Unix下的代理工具。 它可以使任何程序通过代理上网, 允许TCP和DNS通过代理隧道, 支持HTTP、 SOCKS4和SOCKS5类型的代理服务器, 并且可配置多个代理。 ProxyChains通过一个用户定义的代理列表强制连接指定的应用程序, 直接断开接收方和发送方的连接。

GitHub:https://github.com/rofl0r/proxychains-ng :::

  1. 配置

配置文件路径:

代理配置格式:

image.png
image.png

在配置文件中找到并添加代理:

如果填写了多个代理,那么 proxychains 将会将这些代理组成链。

:::warning{title="注意"} 在配置文件中要取消选项:

image.png
image.png

:::

  1. 使用

在需要使用代理的程序前加上即可使用代理:

举例:

:::tip{title="科学上网"} 如果你在其他机器上设置好了clash代理,也可借用代理实现科学上网。

修改配置文件,将代理只保留下面这个(将ip修改为你的clash客户端运行机器的ip):

测试:

image.png :::

Vim是一款文本编辑器,它可以在终端或命令行界面下使用。Vim最初是由Bram Moolenaar在1991年发布的,并基于另一款文本编辑器Vi开发而来。

Vim具有强大的编辑功能,可以帮助用户快速编辑和处理文本文件。它支持多种编辑模式,包括命令模式、插入模式和可视模式,可以通过快捷键在不同的模式之间切换。Vim还支持多种自定义配置选项,可以让用户根据自己的需求进行定制。

由于Vim可以在终端下运行,因此它特别适合在远程服务器上进行编辑操作。Vim也有广泛的使用者社群和丰富的插件生态系统,可以通过插件扩展其功能。由于Vim的学习曲线较陡峭,因此需要一定的学习成本。但是一旦掌握了Vim的基本用法,就能够大幅提高文本编辑效率。

官网:https://www.vim.org/

命令模式

窗口管理
功能按键关闭当前窗口保存并关闭当前窗口关闭当前窗口(不保存)水平分割窗口垂直分割窗口
tab页管理
功能按键在新tab页打开文件切换到下一个tab切换到上一个tab关闭其他tab
文本内容处理
功能按键复制第49到51行的内容删除第30到第34行的内容删除当前行及下面两行删除整个文档
其他
  1. 保存需要用sudo权限保存的文件:
  2. 取消搜索高亮:
光标移动
功能按键光标向上移动10行光标向下移动10行移动到第123行移动到首行移动到末行

输入模式

功能按键在光标前输入在光标后输入在行首输入在行尾输入在下一行开头输入在上一行开头输入修改当前char删除前一个char删除前一个word删除当前行光标前内容回到上次修改位置粘贴寄存器的内容

替换模式

  • : 进入char替换模式

可视模式

功能按键进入char-level可视模式进入line-level可视模式进入block-level可视模式

说明:

  • : 命令执行次数
  • : 命令类型,包括、、、等
  • : 指明光标移动范围
  • : 文本块对象

例如:

  • : 修改当前word
  • : 复制当前word
  • : 删除当前字符
  • : 修改直到前面的内容
  • : 删除3行
  • : 向后删除2个word

# 文本对象(text object)

在Vim中,text objects(文本对象)是一种用于快速选择和操作文本块的功能。它可以让用户在编辑时快速选择一段文本,而不需要使用鼠标进行拖拽或者键盘进行移动光标来选择。text objects可以让用户通过一些命令快速选择文本对象,然后进行复制、剪切、粘贴或其他操作。

在Vim中,text objects有多种类型,例如:

typecommandword或sentence或paragraph或string或, 或code 或 parentheses或brackets或braces或tags或

其中, 表示,包含定界符; 表示,不包括定界符

术语解释:

来源:

术语解释A consists of a sequence of letters, digits and underscores, or a sequence of other non-blank characters, separated with white space (spaces, tabs, EOL).A consists of a sequence of non-blank characters, separated with white space. An empty line is also considered to be a A is defined as ending at a '.', '!' or '?' followed by either the end of a line, or by a space or tab. Any number of closing ')', ']', '"' and ''' characters may appear after the '.', '!' or '?' before the spaces, tabs or end of line. A paragraph and section boundary is also a sentence boundary.A begins after each empty line, and also at each of a set of paragraph macros, specified by the pairs of characters in the 'paragraphs' option.

动作(motion)

在vim中,motion表示移动光标的操作。具体来说,motion是指通过键盘输入一系列命令来使光标在文本中向前或向后移动的操作,这些命令通常与方向键(如上、下、左、右)无关,而是使用vim的特殊命令,例如单词、行、段落等。

motion是vim中的重要概念之一,熟练掌握各种motion的使用可以提高vim的操作效率。

下面介绍vim中常见的motion:

行内移动
移动到行首/行尾
功能按键移动到行首移动到行尾移动到行首(非空白)移动到行尾(非空白)
按单词移动

word和Word的区别

功能按键移动到下一个word开头移动到上一个word开头移动到下一个word结尾移动到上一个word结尾移动到下一个WORD开头移动到上一个WORD开头移动到下一个WORD结尾移动到上一个WORD结尾
按括号移动
功能按键移动到对应括号匹配位置(支持)
按指定字符移动
功能按键移到到下一个移到到上一个移到直到下一个移到直到上一个
跨行移动
功能按键移动到首行移动到尾行移动到行 或 移动到屏幕顶端移动到屏幕中端移动到屏幕底端向下翻页半个屏幕向上翻页半个屏幕向下翻页整个屏幕向上翻页整个屏幕向下滚动向上滚动

复制/剪切/修改/粘贴

复制
功能按键复制一个letter复制当前行 or 复制内容复制内容
粘贴
功能按键在当前光标后粘贴 (结束后光标置于粘贴内容前)在当前光标前粘贴 (结束后光标置于粘贴内容前)在当前光标后粘贴 (结束后光标置于粘贴内容后)在当前光标前粘贴 (结束后光标置于粘贴内容后)拷贝当前行到下一行交换上下两行
剪切
功能按键剪切当前字符剪切当前行剪切至行尾交换左右字母顺序 或 剪切内容剪切内容
修改
功能按键修改当前行修改至行尾修改内容修改内容

查找

格式:

  • : 向后查找
  • : 向后查找
  • : 向后查找光标下所在单词, 相当于
  • : 向前查找光标下所在单词, 相当于

与配合使用,可以实现对匹配项的批量修改或删除==

例如:

测试文本: cucumber carrot lettuce cabbage carrot lettuce cucumber cucumber cucumber carrot kale cucumber kale

操作序列:

结果: foo carrot lettuce cabbage carrot lettuce foo foo foo carrot kale foo kale

替换

格式:

说明:

  • : 作用范围,如:
    • 表示整个文档
    • 表示第3行至第5行
    • 表示第1行至最后一行
    • 表示当前行及后面两行
  • : 表示匹配的模式
  • : 表示替换的内容
  • : 替换标志位,如:
    • : 表示全部匹配项替换
    • : 表示忽略大小写
    • : 表示替换前提示要求确认

例如:

环绕

功能按键说明删除环绕添加环绕添加环绕需要先选中再使用修改环绕将'修改为"将指定单词环绕符号将指定单词用包裹

其他

功能按键交换大小写交换整行大小写增加缩进减少缩进自增1自减1

参考:https://www.iteye.com/blog/liuzhijun-

类型名称作用未命名寄存器(unamed register)复制/剪切默认的寄存器存储位置命名寄存器(named register)由用户自定义存储内容复制寄存器(yank register)存储最近复制的内容剪切寄存器(cut register)存储最近9次剪切的内容(以行为单位),其中1表示最近1次剪切的内容,2表示倒数第二次剪切的内容,以此类推小删除寄存器(small delete register)相比1-9寄存器以行为单位,这个粒度更细, 可以存储char、word等系统寄存器(system register)系统寄存器,可以与vim共享内容

查看寄存器内容:

语法

  • 通过语法来指定使用命名寄存器,向其中覆盖写入内容
  • 通过语法来指定使用命名寄存器,向其中追加写入内容
功能按键存储内容到命名寄存器 或 或 粘贴命名寄存器的内容粘贴系统剪贴板内容
  • : 录制宏, 以为界开始录制,以为界结束录制
  • : 调用宏
  • : 添加标记到中,可以为
  • : 跳转到存储的标记处
  • : 跳转到存储的标记处行首
  • : 在当前光标处与标记处来回切换
  • : 当前光标所在行处与标记处来回切换,光标定位在行首
  • : 重复执行上次修改
  • : 撤销上次更改
  • : 恢复上次更改

常用基础配置

配置选项说明显示行号自动缩进智能缩进,根据上一行的缩进方式来缩进tab 为 4 个空格设置每次缩进的空格数为 4当文件被改动时自动载入语法高亮搜索时忽略大小写搜索时区分大小写,但如果搜索词全小写则忽略大小写鼠标支持允许使用鼠标复制和粘贴备份文件目录将 tab 转为空格高亮显示搜索结果在搜索时逐步显示结果在插入括号时高亮显示匹配的括号不折行显示内容折行显示内容禁止创建 swap 文件设置 Vim 的寻找文件路径,在当前目录和所有子目录下查找文件显示当前光标所在行和列的位置开启拼写检查功能设置拼写检查语言为英语按照缩进级别进行折叠设置折叠列的宽度为 2设置距离屏幕顶端和底端的距离,以保证光标始终在屏幕中央设置每行最大字符数为 80开启撤销文件功能,每次编辑时都会自动生成一个撤销文件设置撤销文件保存的最大历史记录数为 1000设置 Vim 自动重新加载撤销文件的时间间隔为 10000 次编辑操作禁用折叠功能启用折叠功能高亮显示当前行高亮显示当前列显示行尾空格等不可打印字符允许与系统剪贴板交互将 Vim 设置为默认编辑器自定义键映射中的前缀键为,将 映射为某个功能,如删除当前行

插件管理

插件管理器:vim-plug

  • 安装
  • 使用

添加插件示例(支持多种格式):

命令说明:

CommandDescriptionInstall pluginsInstall or update pluginsRemove unlisted plugins (bang version will clean without prompt)Upgrade vim-plug itselfCheck the status of pluginsExamine changes from the previous update and the pending changesGenerate script for restoring the current snapshot of the plugins

推荐配置

参考: https://github.com/amix/vimrc

安装:

此时,会生成一个默认的文件,包含了该项目为我们指定的推荐配置。 我们可以将自己补充的配置添加在中。

VSCode

可以安装vim插件,来获得类似原生vim的编辑体验。

启用与关闭vim: :

自用配置:

JetBrains

同样可以安装vim插件

  1. https://vim.rtorr.com/
  2. https://www.lesswrong.com/posts/ioGf4LHid42mCK3SK/vim
  3. Learn Vim | vscode插件

VS Code(Visual Studio Code)是一款免费、开源的代码编辑器,由微软开发和维护。它支持多种编程语言和框架,并提供了丰富的扩展功能,可以轻松地满足开发者的不同需求。

以下是 VS Code 的一些主要特点:

  1. 跨平台:VS Code 可以在 Windows、macOS 和 Linux 上运行。
  2. 内置调试器:VS Code 内置了调试器,支持多种语言和框架的调试。
  3. 丰富的扩展功能:VS Code 有大量的扩展可供选择,可以满足不同开发者的需求。
  4. 集成终端:VS Code 内置了终端,可以在编辑器内进行命令行操作。
  5. Git 支持:VS Code 提供了 Git 集成,可以轻松地进行版本控制操作。
  6. 快速编辑:VS Code 提供了多种快捷键和编辑工具,可以提高开发效率。

总之,VS Code 是一款功能强大的代码编辑器,可帮助开发者更高效地进行开发工作。

官网:https://code.visualstudio.com/
文档:https://code.visualstudio.com/docs 扩展市场:https://marketplace.visualstudio.com/VSCode

  1. 方法一
    可以通过快捷键打开快捷键面板,在其中可以查看、修改、新建和删除快捷键 image.png
  2. 方法二

找到想要的功能,然后点击该条最右侧的齿轮图标,可以直接跳转到快捷键分配界面

image.png
image.png

光标移动

行内跳转
快捷键功能光标右移一个单词光标左移一个单词光标移到行首光标移到行尾

下面功能的依赖插件Quick and Simple Text Selection:

快捷键功能选中之间的内容,然后使用左右方向键移到前或后选中之间的内容,然后使用左右方向键移到前或后选中之间的内容,然后使用左右方向键移到前或后选中之间的内容,然后使用左右方向键移到前或后选中之间的内容,然后使用左右方向键移到前或后选中之间的内容,然后使用左右方向键移到前或后
当前文件跳转
快捷键功能快速跳转到指定行跳转到选中变量的首次定义位置。使用还可以将变量按类型分组 image.png跳转到上次光标所在位置

下面功能的依赖插件Bookmarks

  • :跳转到下一个bookmark位置
  • :跳转到上一个bookmark位置
跨文件跳转
快捷键功能切换回打开过的前一个文件切换到打开过的后一个文件按住,鼠标选中某个函数即可跳转在工作区内查找指定对象定义位置并跳转 image.png

多光标

快捷键功能在上一行添加一个光标在下一行添加一个光标按住再用鼠标点选设置多个光标

文本删除

快捷键功能向左删除整个单词向右删除整个单词删除当前行

文本插入

快捷键功能在当前行下方插入空行, 不需要光标在行尾在当前行上方插入空行

文本复制

快捷键功能复制当前行到上一行复制当前行到下一行

文本移动

快捷键功能与上一行交换顺序与下一行交换顺序

文本合并

快捷键功能合并下一行

文本选择

快捷键功能选中光标所在单词,再次执行会选中下一个与当前单词相同的单词。
: 切换大小写匹配(默认是忽略大小写)
: 切换全词匹配(默认是忽略全词匹配)
: 切换正则匹配(默认不开启)可以选中当前文件中所有当前出现的光标所在单词选中所有文本选中当前行文本鼠标拖选,可以纵向选择文本

下面功能的依赖插件Quick and Simple Text Selection

快捷键功能选中之间的内容选中之间的内容选中之间的内容选中之间的内容选中之间的内容选中之间的内容

下面功能的依赖插件Bookmarks

快捷键功能选中从当前位置到下一个bookmark之间的文本选中从当前位置到上一个bookmark之间的文本

文本查找

当前文件查找
快捷键功能查找指定符号查找下一个查找上一个
跨文件查找
快捷键功能查找指定符号

文本替换

快捷键功能查找并替换文本

变量重命名

快捷键功能选中一个变量,按输入重命名后的变量

文本折叠与展开

快捷键功能折叠之间的内容展开之间的内容折叠之间的内容展开之间的内容

文本注释

快捷键功能注释当前行(再次执行会取消注释)

文本自动换行

快捷键功能是否触发自动换行

文本排序

快捷键功能输入升序排列文本输入降序排列文本

文本格式化

快捷键功能格式化整个文档格式化当前选中文本

文件路径

快捷键功能复制当前文件绝对路径(同样适用于文件Explore面板)在文件资源管理器中打开当前文件复制当前文件相对路径

文件查找

快捷键功能选择跳转到已打开的编辑器文件(在打开的文件过多折叠到一起时很有用)选择跳转到已打开的编辑器文件,并且按文件组分好类

文件对比

快捷键功能将当前文件与剪贴板内容对比
快捷键功能打开内置终端新建终端从列表中选择切换到目标目录滚动到命令执行开始处滚动到命令执行结束处

屏幕滚动

快捷键功能界面向下滚动(光标位置不变)界面向上滚动(光标位置不变)按住再滚动,可以实现5倍速的快速滚动,对于阅读长文件时有用

分屏

快捷键功能横向分屏

文件(夹)打开与关闭

快捷键功能打开新的空白文件从列表中选择打开文件打开目录关闭当前文件恢复刚刚关闭的文件在文件Explorer中聚焦当前文件新建一个编辑器窗口打开指定的文件目录打开最近打开的文件目录关闭当前编辑器窗口固定当前编辑器窗口

编辑器组

快捷键功能关闭所有编辑器组
聚焦
快捷键功能聚焦到第1个编辑器组聚焦到第2个编辑器组(如果没有则新建)聚焦到第3个编辑器组聚焦到第上个编辑器聚焦到第下个编辑器
布局调整
快捷键功能向左移动当前编辑器组向右移动当前编辑器组向上移动当前编辑器组向下移动当前编辑器组
编辑器移动
快捷键功能将当前文件移动到上个编辑器组将当前文件移动到下个编辑器组将当前文件移动到下个编辑器组
编辑器切换
快捷键功能在当前编辑器组内选择文件打开
快捷键功能打开命令面板打开settings运行build任务显示/隐藏侧边栏打开预览,支持markdown、latex等

在替换窗口勾选正则表达式按钮,在第一个文本框输入,选择全部替换即可。

image.png
image.png

参考:https://code.visualstudio.com/docs/editor/userdefinedsnippets#_assign-keybindings-to-snippets

  1. 打开snippets配置 image.png

选择要设置snippet的语言,然后添加snippet

样例:

  1. 为snippet设置快捷键
image.png
image.png

添加条目,示例如下:

先占有文件,修改完后,再复原

参考: Profiles in Visual Studio Code

支持的操作:

插件功能Project Manager 将多个工程目录归档到一起,方便切换Quick and Simple Text Selection 支持快速选中双引号、单引号、小括号等配对符号内的文本,非常推荐使用!Bookmarks 在代码指定位置添加标记,方便在文件不同位置来回跳转Material Icon Theme 文件(夹)图标美化Blockman - Highlight Nested Code Blocks 代码块加边框,使代码更加清晰易读Color Highlight 将16进制颜色代码高亮显示,方便查看其具体颜色Git Graph 将git提交历史可视化展示Gitlens git仓库管理工具Peacock 修改vscode窗口颜色,当同时打开多个不同的vscode窗口时更方便区分Better Align 代码对齐将csv文件每列设置不同的颜色,方便查看基于AI的代码智能补全插件,非常推荐!将代码中的todo、fixme的记号高亮显示连接数据库工具,支持mysql、mongodb等多种数据库算法刷题插件

版权声明


相关文章:

  • 数据结构导论pdf2025-01-06 15:30:04
  • usb转rs232串口驱动安装2025-01-06 15:30:04
  • 灰度发布和灰度测试2025-01-06 15:30:04
  • js防抖节流理解2025-01-06 15:30:04
  • oracle rman全库备份2025-01-06 15:30:04
  • linux vdi 桌面虚拟化2025-01-06 15:30:04
  • 基于java新闻发布及管理系统2025-01-06 15:30:04
  • 操作系统汤小丹慕课版课后答案2025-01-06 15:30:04
  • freopen stdin2025-01-06 15:30:04
  • 快表是cache吗2025-01-06 15:30:04