推荐一款代理协议转换工具 gost

使用 gost 可以有效解决有些软件只能使用特定协议代理协议。

c418659c83426619df9ef71f918c8526

README

https://github.com/ginuerzh/gost/blob/master/README.md

我的使用

详细的使用方法,官方README已经写的很清楚了。

这里主要记录一下我的使用路径。

网络协议 SOCKS5 + TLS

Socks5代理自身是一个网络协议,它允许客户端通过代理服务器与目标服务器进行通信,而TLS是一种广泛使用的加密协议,旨在为互联网通信提供安全和数据保护。

Socks5代理的特点

不加密:Socks5代理本身不提供加密功能,它只是简单地转发数据包。这意味着如果不结合其他加密手段,通过Socks5代理传输的数据可以被中间人攻击者截获和查看。
支持认证:Socks5支持用户认证,这提供了一定程度上的安全性,但这并不涉及数据传输的加密。

TLS的作用

加密通信:TLS通过对数据进行加密,确保数据在客户端与服务器之间传输过程的隐私性和完整性,即使数据通过了Socks5代理,只要使用了TLS,数据仍然是加密的。
防篡改:TLS还提供数据完整性检查,防止数据在传输过程中被篡改。

结合使用Socks5和TLS的安全性

🔒当Socks5代理与TLS结合使用时,可以提供较高的安全性。Socks5负责将数据包从客户端转发到目标服务器,而TLS确保这些数据包在传输过程中被加密,从而保护了数据的隐私性和完整性。这种组合可以有效防止中间人攻击,因为即使攻击者能够截获通过Socks5代理传输的数据,由于TLS的加密,他们也无法阅读或篡改这些数据。

gost 命令

xxxx=端口
cert和key 放文件路径
secrets为认证信息

gost -L="socks5+tls://:xxxx?cert=/cert.pem&key=/key.pem&secrets=/secrets.txt"

https 证书大家自行搜索,很多服务厂家都提供。

secrets.txt文件格式为按行分割的认证信息,每一行认证信息为用空格分割的user-pass对,以 # 开始的行为注释行。

# period for live reloading
reload      10s

# username password

admin           #123456
test\user001    123456
test.user@002   12345678

reload - 此配置文件支持热更新。此选项用来指定文件检查周期,默认关闭热更新。

macOS 查询使用xxx端口的程序,并杀死

在macOS上查询使用443端口的程序并杀死这个程序,可以通过以下几个步骤来完成:

  1. 查询使用443端口的程序:可以使用lsof命令加上-i选项来查找使用指定端口的程序。lsof是一个列出当前系统打开文件的工具,其中网络连接也被视作“打开的文件”。

  2. 杀死进程:一旦找到使用该端口的进程,可以使用kill命令来杀死这个进程。如果进程不愿意终止,可以尝试kill -9来强制杀死进程。

以下是具体的步骤和命令:

首先,打开终端(Terminal),然后运行以下命令来查询使用443端口的程序:

lsof -i :443

这条命令会列出所有使用443端口的进程信息,包括进程的ID(PID)。

然后,根据上一步骤中获取到的PID,使用kill命令来杀死进程。例如,如果进程ID是1234,那么运行:

kill 1234

如果进程拒绝被杀死,可以使用:

kill -9 1234

请谨慎使用kill -9,因为这会立即终止进程,可能会导致数据丢失或其他问题。

以上步骤将帮助你在macOS上查询并杀死使用443端口的程序。记得在执行这些操作前确认该进程是否可以安全终止,以避免不必要的服务中断。

macOS 如何开机启动某个shell 命令

在macOS上设置开机启动某个shell命令,通常可以通过使用"登录项"或者创建一个"Launch Agent"来实现。以下是两种方法的详细步骤:

方法1:使用"登录项"

  1. 创建一个脚本文件:首先,你需要创建一个包含你想运行的shell命令的脚本文件。假设我们的命令是echo "Hello, World!",你可以创建一个名为startup_command.sh的文件,并在文件中写入以下内容:
#!/bin/bash
echo "Hello, World!"
  1. 使脚本可执行:通过在终端执行chmod +x /path/to/startup_command.sh命令来使脚本可执行,其中/path/to/startup_command.sh是脚本文件的路径。

  2. 添加到登录项:打开“系统偏好设置” > “用户与群组” > 选择当前用户 > “登录项”标签页,点击"+",然后浏览并选择你的脚本文件。这样,每次登录时脚本就会被执行。

方法2:创建一个Launch Agent

  1. 创建plist文件:Launch Agent是通过plist(属性列表文件)配置的,这个文件定义了何时以及如何启动特定的程序或脚本。你需要在~/Library/LaunchAgents目录下创建一个plist文件。例如,com.user.startupcommand.plist

  2. 配置plist文件:编辑你的plist文件,加入如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.user.startupcommand</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/your_script.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

/path/to/your_script.sh替换为你的脚本文件路径。这个配置会在每次用户登录时执行脚本。

  1. 加载Launch Agent:使用以下命令加载你的Launch Agent:
launchctl load ~/Library/LaunchAgents/com.user.startupcommand.plist

如果你希望在系统启动时而不仅仅是用户登录时执行命令,你可能需要将plist文件放在/Library/LaunchDaemons目录下,并确保它具有适当的权限。

如何在后台运行某个shell 脚本

在macOS或其他Unix-like系统中,将某个shell脚本在后台运行的常用方法是使用&符号。当你在命令行中执行脚本或命令时,在命令的末尾添加&,系统会将该命令置于后台执行。这样,你就可以继续在同一个终端会话中执行其他命令,而无需等待之前的命令完成。下面是具体步骤和示例:

在后台运行脚本的步骤

  1. 确保脚本可执行:首先,你需要确保你的脚本是可执行的。你可以通过在终端中运行以下命令来给予脚本执行权限:
chmod +x /path/to/your_script.sh

这里的/path/to/your_script.sh是你脚本文件的路径。

  1. 在后台运行脚本:然后,在终端中使用以下命令来在后台运行你的脚本:
/path/to/your_script.sh &

添加&符号会使得该脚本在后台运行。

查看后台进程

  • 运行jobs命令可以查看当前会话中所有在后台运行的任务。
  • 使用bg命令可以将一个在前台暂停的任务切换到后台继续运行。
  • 使用fg命令可以将后台任务带回到前台继续运行。

管理后台运行的脚本

如果你想让脚本即使在关闭终端后也能继续运行,可以使用nohup命令。nohup命令可以使得运行的命令忽略挂起信号,这意味着即使终端被关闭,运行的进程也不会被终止:

nohup /path/to/your_script.sh &

运行这个命令后,输出通常会被重定向到名为nohup.out的文件中,除非你手动指定了输出文件。

手动指定了输出文件

如果你想在使用nohup命令运行脚本的同时手动指定输出文件,你可以通过重定向标准输出(stdout)和标准错误输出(stderr)来实现。这不仅可以帮助你保存脚本的运行结果,还能让你更好地管理和查看脚本产生的输出。以下是具体的步骤和示例:

使用nohup命令手动指定输出文件

  1. 基本语法
nohup /path/to/your_script.sh > /path/to/your_output.log 2>&1 &

这里的/path/to/your_script.sh是你的脚本路径,/path/to/your_output.log是你希望将输出重定向到的文件路径。

  1. 解析命令
  • nohup:使得命令可以在退出终端后继续运行。
  • /path/to/your_script.sh:你想要在后台运行的脚本。
  • >:重定向标准输出到指定的文件。
  • /path/to/your_output.log:脚本运行的输出将会保存到这个文件。
  • 2>&1:将标准错误输出(stderr)重定向到标准输出(stdout),这意味着错误信息也会被写入到your_output.log文件中。(我并没有使用这个参数,因为我需要记录全部的日志)
  • &:将命令置于后台执行。
  1. 示例

假设你有一个脚本script.sh,你想在后台运行它并将输出保存到output.log中,你可以这样做:

nohup ~/scripts/script.sh > ~/logs/output.log 2>&1 &

这个命令会在你的用户目录下的logs文件夹中创建一个output.log文件,其中包含了脚本的输出内容,包括任何错误信息。

自动创建时间为文件名的日志文件

要自动创建以当前时间为文件名的日志文件,并在运行脚本时将输出重定向到该文件,你可以在shell脚本中使用日期命令(date)结合文件重定向。以下是具体步骤和一个示例:

步骤

  1. 定义日志文件的文件名:使用date命令和格式字符串来定义日志文件的命名方式。例如,使用+%Y-%m-%d-%H%M%S格式字符串可以生成一个包含年、月、日、小时、分钟和秒的时间戳。

  2. 重定向输出到该日志文件:在脚本或命令行中,将标准输出(stdout)和标准错误(stderr)重定向到使用date命令生成的文件名。

示例

假设你有一个脚本script.sh,你想在执行时自动创建一个日志文件,文件名包含执行时的日期和时间,你可以这样做:

#!/bin/bash
# 获取当前时间,格式为YYYY-MM-DD-HHMMSS
LOGFILE=/Users/lijianfei/Desktop/socks5_tls/$(date "+%Y-%m-%d-%H%M%S").log

# 运行你的命令,并将输出重定向到日志文件
echo "执行一些操作" > "$LOGFILE"
# 例如,假设你的脚本内容是打印一些信息
echo "Hello, World!" >> "$LOGFILE"

# 你可以在这里添加更多命令,并确保它们的输出也重定向到LOGFILE

在这个示例中,LOGFILE变量定义了日志文件的路径和名称,它包括执行脚本时的日期和时间。这样,每次运行脚本时都会创建一个新的日志文件,其文件名反映了脚本运行的确切时间。

要运行这个脚本并自动创建日志文件,确保脚本有执行权限:

chmod +x /path/to/your_script.sh

然后运行脚本:

/path/to/your_script.sh

这将在指定目录下创建一个以当前时间为名的日志文件,并包含脚本的输出。