推荐一款代理协议转换工具 gost
使用 gost 可以有效解决有些软件只能使用特定协议代理协议。
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端口的程序并杀死这个程序,可以通过以下几个步骤来完成:
-
查询使用443端口的程序:可以使用
lsof
命令加上-i
选项来查找使用指定端口的程序。lsof
是一个列出当前系统打开文件的工具,其中网络连接也被视作“打开的文件”。 -
杀死进程:一旦找到使用该端口的进程,可以使用
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:使用"登录项"
- 创建一个脚本文件:首先,你需要创建一个包含你想运行的shell命令的脚本文件。假设我们的命令是
echo "Hello, World!"
,你可以创建一个名为startup_command.sh
的文件,并在文件中写入以下内容:
#!/bin/bash
echo "Hello, World!"
-
使脚本可执行:通过在终端执行
chmod +x /path/to/startup_command.sh
命令来使脚本可执行,其中/path/to/startup_command.sh
是脚本文件的路径。 -
添加到登录项:打开“系统偏好设置” > “用户与群组” > 选择当前用户 > “登录项”标签页,点击"+",然后浏览并选择你的脚本文件。这样,每次登录时脚本就会被执行。
方法2:创建一个Launch Agent
-
创建plist文件:Launch Agent是通过plist(属性列表文件)配置的,这个文件定义了何时以及如何启动特定的程序或脚本。你需要在
~/Library/LaunchAgents
目录下创建一个plist文件。例如,com.user.startupcommand.plist
。 -
配置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
替换为你的脚本文件路径。这个配置会在每次用户登录时执行脚本。
- 加载Launch Agent:使用以下命令加载你的Launch Agent:
launchctl load ~/Library/LaunchAgents/com.user.startupcommand.plist
如果你希望在系统启动时而不仅仅是用户登录时执行命令,你可能需要将plist文件放在/Library/LaunchDaemons
目录下,并确保它具有适当的权限。
如何在后台运行某个shell 脚本
在macOS或其他Unix-like系统中,将某个shell脚本在后台运行的常用方法是使用&
符号。当你在命令行中执行脚本或命令时,在命令的末尾添加&
,系统会将该命令置于后台执行。这样,你就可以继续在同一个终端会话中执行其他命令,而无需等待之前的命令完成。下面是具体步骤和示例:
在后台运行脚本的步骤
- 确保脚本可执行:首先,你需要确保你的脚本是可执行的。你可以通过在终端中运行以下命令来给予脚本执行权限:
chmod +x /path/to/your_script.sh
这里的/path/to/your_script.sh
是你脚本文件的路径。
- 在后台运行脚本:然后,在终端中使用以下命令来在后台运行你的脚本:
/path/to/your_script.sh &
添加&
符号会使得该脚本在后台运行。
查看后台进程
- 运行
jobs
命令可以查看当前会话中所有在后台运行的任务。 - 使用
bg
命令可以将一个在前台暂停的任务切换到后台继续运行。 - 使用
fg
命令可以将后台任务带回到前台继续运行。
管理后台运行的脚本
如果你想让脚本即使在关闭终端后也能继续运行,可以使用nohup
命令。nohup
命令可以使得运行的命令忽略挂起信号,这意味着即使终端被关闭,运行的进程也不会被终止:
nohup /path/to/your_script.sh &
运行这个命令后,输出通常会被重定向到名为nohup.out
的文件中,除非你手动指定了输出文件。
手动指定了输出文件
如果你想在使用nohup
命令运行脚本的同时手动指定输出文件,你可以通过重定向标准输出(stdout)和标准错误输出(stderr)来实现。这不仅可以帮助你保存脚本的运行结果,还能让你更好地管理和查看脚本产生的输出。以下是具体的步骤和示例:
使用nohup
命令手动指定输出文件
- 基本语法:
nohup /path/to/your_script.sh > /path/to/your_output.log 2>&1 &
这里的/path/to/your_script.sh
是你的脚本路径,/path/to/your_output.log
是你希望将输出重定向到的文件路径。
- 解析命令:
nohup
:使得命令可以在退出终端后继续运行。/path/to/your_script.sh
:你想要在后台运行的脚本。>
:重定向标准输出到指定的文件。/path/to/your_output.log
:脚本运行的输出将会保存到这个文件。2>&1
:将标准错误输出(stderr)重定向到标准输出(stdout),这意味着错误信息也会被写入到your_output.log
文件中。(我并没有使用这个参数,因为我需要记录全部的日志)&
:将命令置于后台执行。
- 示例:
假设你有一个脚本script.sh
,你想在后台运行它并将输出保存到output.log
中,你可以这样做:
nohup ~/scripts/script.sh > ~/logs/output.log 2>&1 &
这个命令会在你的用户目录下的logs
文件夹中创建一个output.log
文件,其中包含了脚本的输出内容,包括任何错误信息。
自动创建时间为文件名的日志文件
要自动创建以当前时间为文件名的日志文件,并在运行脚本时将输出重定向到该文件,你可以在shell脚本中使用日期命令(date
)结合文件重定向。以下是具体步骤和一个示例:
步骤
-
定义日志文件的文件名:使用
date
命令和格式字符串来定义日志文件的命名方式。例如,使用+%Y-%m-%d-%H%M%S
格式字符串可以生成一个包含年、月、日、小时、分钟和秒的时间戳。 -
重定向输出到该日志文件:在脚本或命令行中,将标准输出(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
这将在指定目录下创建一个以当前时间为名的日志文件,并包含脚本的输出。