首页
Search
1
ikuai安装教程
27 阅读
2
Linux下python3运行环境快速安装教程
22 阅读
3
openresty宝塔一键安装opencc插件
20 阅读
4
使用FlareSolverr绕过cloudflare5秒盾
11 阅读
5
haproxy批量端口转发设置
5 阅读
默认分类
登录
Search
标签搜索
ikuai
vps
vpn
aliyun
腾讯云
Anaconda
python
haproxy
端口转发
nginx
openresty
opencc
go安装
ubunt
linux
debian
windows
golang
Typecho
累计撰写
8
篇文章
累计收到
0
条评论
首页
栏目
默认分类
页面
搜索到
8
篇与
的结果
2025-08-21
linux下快速安装golang环境
下载地址windows:https://go.dev/dl/go1.25.0.windows-amd64.msilinux_amd_86x64:https://go.dev/dl/go1.25.0.linux-amd64.tar.gzwindows下直接打开安装 完事之后添加系统环境变量一般默认安装目录是C:\Program Files\Go\bin将这个路径添加到系统变量的path的中即可C:\Program Files\Go\binlinux下tar -C /usr/local -xzf go1.25.0.linux-amd64.tar.gz将 Go 二进制文件添加到 $PATH 环境变量中echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bash_profile执行下面指令使其生效source ~/.bash_profile查看 GO 版本 验证安装是否生效go versionDebian / Ubuntu 可以使用apt安装器进行更快速的安装,只是更新较慢不是最新版apt updateapt install golang-go查看 GO 版本go version
2025年08月21日
5 阅读
0 评论
0 点赞
2025-08-05
使用FlareSolverr绕过cloudflare5秒盾
使用二进制方式windows下https://github.com/FlareSolverr/FlareSolverr/releases/download/v3.3.25/flaresolverr_windows_x64.ziplinux下wget https://github.com/FlareSolverr/FlareSolverr/releases/latest/download/flaresolverr_linux_x64.tar.gztar -zxvf flaresolverr_linux_x64.tar.gzcd flaresolverr/chomd +x flaresolverr./flaresolverr你也可以选择让它在后台运行,并指定一个端口:nohup ./flaresolverr --port 8192 &也可以使用代理方式启动HTTP_PROXY="http://192.168.1.1:8888" HTTPS_PROXY="http://192.168.1.1:8888" ./flaresolverr如果运行报错 则需要安装依赖 Debian / Ubuntu 系统apt-get install -y \ libnss3 \ libatk1.0-0 \ libatk-bridge2.0-0 \ libcups2 \ libxkbcommon0 \ libxcomposite1 \ libxrandr2 \ libgbm1 \ libasound2 \ libxshmfence1 \ libxcursor1 \ libxi6 \ libxtst6 \ libgtk-3-0 \ xvfbCentOS / RHEL / Fedora 系统首先,安装 EPEL (Extra Packages for Enterprise Linux) 仓库,这对于安装一些非官方包很有用:yum install -y epel-releaseyum install -y \ nss \ at-spi2-atk \ cups-libs \ libxkbcommon \ libXcomposite \ libXrandr \ libgbm \ libXcursor \ libXi \ libXtst \ gtk3 \ xorg-x11-server-Xvfb或者使用docker方式docker run -d \ --name=flaresolverr \ -p 8191:8191 \ -e LOG_LEVEL=info \ --restart unless-stopped \ ghcr.io/flaresolverr/flaresolverr:latest必须要使用post请求才能绕过cloudflarecurl -L -X POST 'http://localhost:8191/v1' \ -H 'Content-Type: application/json' \ --data-raw '{ "cmd": "request.get", "url": "http://www.google.com/", "maxTimeout": 60000 }'
2025年08月05日
11 阅读
0 评论
0 点赞
2025-08-05
多出口http代理
本方法是 机器带ip4和ip6 并且ip6非常多的那种,脚本会自动轮训网卡上的ip6为出口适合穷人自建采集pip install netifaces如果报错就安装下库sudo apt update sudo apt install build-essential sudo apt install python3-devimport socket import threading import random import netifaces import time # --- 配置 --- INBOUND_HOST = '0.0.0.0' # 监听所有IPv4地址 INBOUND_PORT = 5678 # 代理端口 # 白名单IP地址,只允许这些IP连接到代理服务器 # 记得替换成你自己的IP地址 WHITELIST_IPS = [ '你的白名单IP1', '你的白名单IP2', ] # 指定要读取IPv6地址的网络接口名称 # 确保这个接口是你之前用脚本绑定了大量IPv6地址的接口 IPV6_INTERFACE = 'eth0' # 全局变量 ipv6_pool = [] current_ip_index = 0 ip_pool_lock = threading.Lock() # 用于线程安全的IP索引更新 def load_ipv6_pool_from_interface(interface_name): """从指定的网络接口加载IPv6地址池""" pool = [] try: addresses = netifaces.ifaddresses(interface_name) if netifaces.AF_INET6 in addresses: for link in addresses[netifaces.AF_INET6]: ipv6_address = link['addr'] if not ipv6_address.startswith('fe80::'): if '%' in ipv6_address: ipv6_address = ipv6_address.split('%')[0] pool.append(ipv6_address) except ValueError: print(f"错误: 找不到网络接口 '{interface_name}'") except Exception as e: print(f"读取网络接口地址时发生错误: {e}") return pool def get_next_ipv6(): """获取下一个轮询的IPv6地址""" global current_ip_index with ip_pool_lock: if not ipv6_pool: return None outbound_ipv6 = ipv6_pool[current_ip_index] # 索引加一,如果到达列表末尾则回到开头 current_ip_index = (current_ip_index + 1) % len(ipv6_pool) return outbound_ipv6 def forward_data(sock1, sock2): """在两个socket之间转发数据""" try: while True: data = sock1.recv(4096) if not data: break sock2.sendall(data) except Exception as e: print(f"数据转发错误: {e}") finally: sock1.close() sock2.close() def handle_client(client_socket): """处理客户端连接""" outbound_socket = None try: client_ip = client_socket.getpeername()[0] if client_ip not in WHITELIST_IPS: print(f"拒绝来自非白名单IP的连接: {client_ip}") client_socket.close() return print(f"接受来自 {client_ip} 的连接") request_line = client_socket.recv(4096).decode('utf-8') if not request_line: client_socket.close() return if not request_line.startswith('CONNECT'): print(f"不支持的请求方法: {request_line.split(' ')[0]}") client_socket.sendall(b'HTTP/1.1 405 Method Not Allowed\r\n\r\n') client_socket.close() return host_port = request_line.split(' ')[1] target_host, target_port = host_port.split(':') target_port = int(target_port) print(f"请求目标: {target_host}:{target_port}") outbound_ipv6 = get_next_ipv6() if not outbound_ipv6: print("错误: IPv6 地址池为空") client_socket.close() return print(f"使用出口IP (轮询): {outbound_ipv6}") outbound_socket = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) outbound_socket.bind((outbound_ipv6, 0)) outbound_socket.connect((target_host, target_port)) client_socket.sendall(b'HTTP/1.1 200 Connection established\r\n\r\n') thread1 = threading.Thread(target=forward_data, args=(client_socket, outbound_socket)) thread2 = threading.Thread(target=forward_data, args=(outbound_socket, client_socket)) thread1.start() thread2.start() thread1.join() thread2.join() except Exception as e: print(f"处理客户端时发生错误: {e}") finally: if client_socket: client_socket.close() if outbound_socket: outbound_socket.close() def main(): """主函数,启动代理服务器""" global ipv6_pool ipv6_pool = load_ipv6_pool_from_interface(IPV6_INTERFACE) if not ipv6_pool: print("警告: IPv6 地址池为空,代理服务器将无法工作。") return server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((INBOUND_HOST, INBOUND_PORT)) server_socket.listen(5) print(f"HTTP代理服务器已启动,监听在 {INBOUND_HOST}:{INBOUND_PORT}") print(f"已加载 {len(ipv6_pool)} 个IPv6地址作为出口。") while True: client_socket, addr = server_socket.accept() client_thread = threading.Thread(target=handle_client, args=(client_socket,)) client_thread.start() if __name__ == '__main__': main()
2025年08月05日
5 阅读
0 评论
0 点赞
2025-08-05
linux批量加100个ipv6ip
脚本随便保存叫什么 比如tianjia.py#!/bin/bash # 网卡名称和 IPv6 子网前缀 INTERFACE="eth0" IPV6_PREFIX="2401:a4a0:2:b8" NUM_ADDRESSES=1000 COUNT=0 PROGRESS_STEP=10 echo "开始为 ${INTERFACE} 随机添加 ${NUM_ADDRESSES} 个 IPv6 地址..." while [ $COUNT -lt $NUM_ADDRESSES ]; do # 从 /dev/urandom 获取 8 字节随机数据,并转换为十六进制 random_host_id=$(dd if=/dev/urandom bs=8 count=1 2>/dev/null | hexdump -v -e '/1 "%02x"' | head -c 16) # 构造完整的 IPv6 地址 random_ip="${IPV6_PREFIX}:${random_host_id:0:4}:${random_host_id:4:4}:${random_host_id:8:4}:${random_host_id:12:4}/64" # 尝试添加 IPv6 地址 if sudo ip -6 addr add "$random_ip" dev "$INTERFACE" &> /dev/null; then COUNT=$((COUNT+1)) # 每成功添加一定数量的 IP,就显示一次进度 if (( COUNT % PROGRESS_STEP == 0 )); then echo "进度:已成功添加 ${COUNT} / ${NUM_ADDRESSES} 个 IPv6 地址。" fi fi done echo "脚本执行完毕,总计添加 ${COUNT} 个 IPv6 地址。"给权限+执行chmod +x tianjia.py sudo ./tianjia.py添加的是随机ip6,前提你得有/64段才行
2025年08月05日
4 阅读
0 评论
0 点赞
2025-03-21
openresty宝塔一键安装opencc插件
先安装宝塔,再用编译模式安装openresty再执行以下一键脚本即可完成opencc的安装#!/bin/bash # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' NC='\033[0m' # 无颜色 # 日志函数 log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # 检查命令执行结果 check_result() { if [ $? -ne 0 ]; then log_error "$1" exit 1 else log_info "$2" fi } # 检测操作系统类型和版本 detect_os() { if [ -f /etc/os-release ]; then . /etc/os-release OS=$ID VERSION_ID=$VERSION_ID log_info "检测到操作系统: $OS $VERSION_ID" else log_error "无法检测操作系统类型" exit 1 fi # 检查支持的操作系统 case "$OS" in "centos"|"rhel"|"almalinux"|"rocky") if [[ "$VERSION_ID" =~ ^[789].*$ ]]; then PACKAGE_MANAGER="yum" else log_error "不支持的 $OS 版本: $VERSION_ID (需要 7/8/9)" exit 1 fi ;; "debian") if [[ "$VERSION_ID" =~ ^1[012].*$ ]]; then PACKAGE_MANAGER="apt-get" else log_error "不支持的 Debian 版本: $VERSION_ID (需要 10/11/12)" exit 1 fi ;; "ubuntu") PACKAGE_MANAGER="apt-get" ;; *) log_error "不支持的操作系统: $OS" exit 1 ;; esac } # 安装依赖 install_dependencies() { log_info "正在安装编译依赖..." if [ "$PACKAGE_MANAGER" = "yum" ]; then yum update -y check_result "系统更新失败" "系统更新成功" yum install -y git wget curl make gcc gcc-c++ pcre-devel openssl-devel zlib-devel cmake autoconf automake libtool perl-devel check_result "依赖安装失败" "依赖安装成功" else apt-get update check_result "系统更新失败" "系统更新成功" apt-get install -y git wget curl build-essential libpcre3-dev libssl-dev zlib1g-dev cmake autoconf automake libtool perl libperl-dev check_result "依赖安装失败" "依赖安装成功" fi } # 安装 OpenCC 1.1.8 install_opencc() { log_info "开始安装 OpenCC 1.1.8..." cd /tmp wget https://github.com/BYVoid/OpenCC/archive/refs/tags/ver.1.1.8.tar.gz -O opencc-1.1.8.tar.gz check_result "下载 OpenCC 失败" "OpenCC 源码下载成功" tar xf opencc-1.1.8.tar.gz check_result "解压 OpenCC 失败" "OpenCC 源码解压成功" cd OpenCC-ver.1.1.8 mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_SHARED_LIBS=ON -DENABLE_DOXYGEN_DOC=OFF .. check_result "OpenCC 配置失败" "OpenCC 配置成功" make -j$(nproc) check_result "OpenCC 编译失败" "OpenCC 编译成功" make install check_result "OpenCC 安装失败" "OpenCC 1.1.8 安装成功" ldconfig log_info "OpenCC 1.1.8 库已添加到系统路径" } # 安装最新版 LuaJIT install_luajit() { log_info "开始安装最新版 LuaJIT..." cd /tmp git clone https://github.com/LuaJIT/LuaJIT.git check_result "克隆 LuaJIT 仓库失败" "LuaJIT 仓库克隆成功" cd LuaJIT make -j$(nproc) check_result "LuaJIT 编译失败" "LuaJIT 编译成功" make install PREFIX=/usr/local check_result "LuaJIT 安装失败" "LuaJIT 安装成功" ln -sf /usr/local/lib/libluajit-5.1.so.2 /usr/lib/libluajit-5.1.so.2 ln -sf /usr/local/lib/libluajit-5.1.so.2 /usr/lib64/libluajit-5.1.so.2 2>/dev/null || true ldconfig log_info "LuaJIT 库已添加到系统路径" } # 下载并编译 OpenResty download_and_compile_openresty() { log_info "开始下载和编译 OpenResty..." # 获取最新稳定版 OpenResty 版本 LATEST_VERSION=$(curl -s https://openresty.org/en/download.html | grep -o "openresty-[0-9.]*\.tar\.gz" | head -1 | sed 's/openresty-//;s/\.tar\.gz//') if [ -z "$LATEST_VERSION" ]; then LATEST_VERSION="1.21.4.2" # 默认版本,以防无法获取最新版本 log_warn "无法获取最新 OpenResty 版本,将使用默认版本: $LATEST_VERSION" else log_info "获取到最新 OpenResty 版本: $LATEST_VERSION" fi cd /tmp wget "https://openresty.org/download/openresty-$LATEST_VERSION.tar.gz" check_result "下载 OpenResty 失败" "OpenResty 源码下载成功" tar xf "openresty-$LATEST_VERSION.tar.gz" check_result "解压 OpenResty 失败" "OpenResty 源码解压成功" cd "openresty-$LATEST_VERSION" # 配置 OpenResty,增加 OpenCC 和 LuaJIT 支持 ./configure \ --prefix=/www/server/openresty \ --with-luajit=/usr/local \ --with-cc-opt="-I/usr/local/include" \ --with-ld-opt="-Wl,-rpath,/usr/local/lib" \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_stub_status_module check_result "OpenResty 配置失败" "OpenResty 配置成功" make -j$(nproc) check_result "OpenResty 编译失败" "OpenResty 编译成功" # 如果已安装 OpenResty 或 Nginx,先停止 if [ -f "/www/server/nginx/sbin/nginx" ]; then log_info "检测到已安装 Nginx,准备停止服务..." /etc/init.d/nginx stop 2>/dev/null || true fi if [ -f "/www/server/openresty/nginx/sbin/nginx" ]; then log_info "检测到已安装 OpenResty,准备停止服务..." /etc/init.d/openresty stop 2>/dev/null || true fi # 如果存在旧的 Nginx 目录,备份 if [ -d "/www/server/nginx" ]; then log_info "备份现有 Nginx 目录..." mv /www/server/nginx /www/server/nginx.bak.$(date +%Y%m%d%H%M%S) fi # 如果存在旧的 OpenResty 目录,备份 if [ -d "/www/server/openresty" ]; then log_info "备份现有 OpenResty 目录..." mv /www/server/openresty /www/server/openresty.bak.$(date +%Y%m%d%H%M%S) fi make install check_result "OpenResty 安装失败" "OpenResty 安装成功" # 创建从 OpenResty 到 Nginx 的符号链接 ln -sf /www/server/openresty/nginx /www/server/nginx check_result "创建 Nginx 符号链接失败" "创建 Nginx 符号链接成功" # 如果有旧的配置,复制回来 if [ -d "/www/server/nginx.bak.*/conf" ]; then LATEST_BACKUP=$(ls -td /www/server/nginx.bak.* | head -1) log_info "从备份 $LATEST_BACKUP 恢复 Nginx 配置..." cp -rf $LATEST_BACKUP/conf/* /www/server/nginx/conf/ check_result "恢复 Nginx 配置失败" "恢复 Nginx 配置成功" fi # 创建启动脚本 cat > /etc/init.d/nginx << 'EOL' #!/bin/bash # chkconfig: 2345 55 25 # description: Nginx Service Control Script # processname: nginx PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NGINX_PATH=/www/server/nginx case "$1" in start) echo -n "Starting Nginx... " $NGINX_PATH/sbin/nginx echo "done" ;; stop) echo -n "Stopping Nginx... " $NGINX_PATH/sbin/nginx -s stop echo "done" ;; restart) echo -n "Restarting Nginx... " $NGINX_PATH/sbin/nginx -s stop sleep 1 $NGINX_PATH/sbin/nginx echo "done" ;; reload) echo -n "Reloading Nginx configuration... " $NGINX_PATH/sbin/nginx -s reload echo "done" ;; status) if pidof nginx > /dev/null; then echo "Nginx is running" else echo "Nginx is not running" exit 1 fi ;; *) echo "Usage: $0 {start|stop|restart|reload|status}" exit 1 ;; esac exit 0 EOL chmod +x /etc/init.d/nginx # 创建 OpenResty 的启动脚本链接 ln -sf /etc/init.d/nginx /etc/init.d/openresty # 设置开机启动 if [ "$PACKAGE_MANAGER" = "yum" ]; then chkconfig --add nginx chkconfig nginx on else update-rc.d nginx defaults fi # 启动 Nginx 服务 /etc/init.d/nginx start check_result "启动 Nginx 服务失败" "启动 Nginx 服务成功" log_info "OpenResty 已安装并配置为 Nginx 服务" } # 主函数 main() { log_info "开始执行 OpenResty 环境配置脚本..." # 检查是否具有 root 权限 if [ "$(id -u)" != "0" ]; then log_error "此脚本需要 root 权限执行" exit 1 fi # 检查宝塔面板是否已安装 if [ ! -d "/www/server/panel" ]; then log_warn "未检测到宝塔面板,将继续执行但某些功能可能受限" fi # 执行安装流程 detect_os install_dependencies install_opencc install_luajit download_and_compile_openresty log_info "======================================" log_info "安装完成! OpenResty 已配置以下组件:" log_info "- OpenCC 1.1.8" log_info "- 最新版 LuaJIT" log_info "- OpenResty 已安装到 /www/server/openresty" log_info "- Nginx 符号链接已创建在 /www/server/nginx" log_info "======================================" log_info "您可以使用以下命令控制服务:" log_info "- 启动: /etc/init.d/nginx start" log_info "- 停止: /etc/init.d/nginx stop" log_info "- 重启: /etc/init.d/nginx restart" log_info "- 重载配置: /etc/init.d/nginx reload" log_info "======================================" } # 执行主函数 main
2025年03月21日
20 阅读
0 评论
0 点赞
1
2