首页
留言
动态
归档
推荐
音乐
工具
Search
1
Emby公益服-上万部电影电视剧免费看
68,095 阅读
2
openwrt-docker部署lxk0301京东自动签到脚本
13,008 阅读
3
QuantumultX-京东签到撸京东豆
11,248 阅读
4
LXK0301京东签到脚本-自动提交互助码
9,699 阅读
5
微信-域名被封监测以及自动更换被封域名
9,215 阅读
随便写写
科学上网
Web开发
瞎折腾
Search
标签搜索
quantumultx
laravel
openwrt
laravel nova
laradock
telegram
DDC/CL
薅羊毛
google adsense
jd_scripts
京东签到
ubuntu
oh-my-zsh
web开发环境
nginx
工具
shadowsocks shadowsocksR
RBAC
权限管理
内网穿透
orzlee
累计撰写
46
篇文章
累计收到
596
条评论
首页
栏目
随便写写
科学上网
Web开发
瞎折腾
页面
留言
动态
归档
推荐
音乐
工具
搜索到
4
篇与
科学上网
的结果
2021-04-13
Nginx SNI 分流(端口复用)使用Xray+VLESS+XTLS
前言 Xray已经出来一段时间了,之前一直使用VLESS+tls+ws方式科学上网,其实都够用,没什么问题。但是了解了下XTLS黑科技,再看看Xray性能测试,这货简直爆炸,性能是TLS的数倍。 其实之前折腾过一次,但是Xray要监听443端口(不监听也行,但是不完美啊),影响做站。虽然有解决方法,但是不够完整,我一不小心就跳坑里面去了。Xray已经带了SNI回落功能(教程看这里:通过 SNI 回落功能实现伪装与按域名分流),Nginx也带SNI功能,我还是觉得用Nginx的比较好,免得折腾Xray影响网站运行。 这里我不会写如何安装Xray,因为教程实在是太多了,嫌麻烦还有一键脚本:Xray_onekey(V2ray脚本别用这个作者的哈,特别是服务器有站点的!!!Xray脚本这个大佬的还不错)。 坑 因为服务器上有几个站点,装完Xray后实现SNI分流,过程非常顺利,但是chrome上有问题,几个二级域名访问的内容全部和第一个访问的域名一样。 例如:我先访问 a.example.com 然后在访问 b.example.com,b.example.com 响应内容和 a.example.com 一模一样,然后再访问 c.example.com 还是和 a.example.com 一样。开chrome隐身模式直接访问 c.example.com 正常,然后访问 a.example.com 或 b.example.com 内容又全是 c.example.com 的(不一定会每次都这样,要看浏览器是否使用现有连接或服务器是否断开了之前的连接)。 这个问题折腾我很长时间,最后发现和HTTP/2有关,我所有站点不使用HTTP/2就会正常,只要有一个站点使用了HTTP/2,你先访问HTTP/2站点,那么后面的其他子域名都会变成它的内容。这个情况没有仔细测试证明,无法确定。 最开始我使用Xray的SNI也是这样,我还以为是Xray SNI的问题,之后换成Nginx使用SNI还是这样。chrome中有这个问题,用手机safari浏览器完全正常。 经过网上一番搜刮,终于找到了问题根源:通配符域名证书。 首先你得了解什么是SNI,个人理解:SNI就是通过证书区分服务。多个二级域名使用通配符域名证书的话,相同的证书无法区分具体想访问的服务,因为它们的证书都一样。 用下人家的图(原作者文章:Multiplex TLS Traffic with SNI Routing): *由于原始服务器10.0.3.2使用的TLS证书具有通配符名称 .example.com,因此Web浏览器可以建立服务器名称为 b.example.com 的 TLS连接,并对HTTP/2请求使用相同的连接到 a.example.com。这可能会在网站和应用程序中导致未定义的行为。** 因为HTTP/2会保持TCP连接,导致你访问了 a.example.com 后,在访问 b.example.com 的时候使用的同一个连接,SNI跟失效了一样,直接使用该连接访问之前的服务。我在Xray的调试日志中发现访问错误的域名没有获取到,是空的! 两个域名使用同一个连接(红框内是连接ID),可以很清楚的看到两个域名使用同一个连接,返回的内容也是一模一样: 解决办法两种: 不使用HTTP/2。不确定是否HTTP2的问题,但是你可以试一试 不使用通配符域名证书,站点域名证书一个个申请。 配置Nginx SNI 使用Nginx首先得安装(如果服务器自带就不用折腾了),不会安装Nginx可以看我之前的文章:Ubuntu 安装nginx(如果使用Xray_onekey脚本,那他已经帮你全部弄好了,你都不用折腾)。 nginx.conf配置追加: stream { map $ssl_preread_server_name $orzlee { a.example.com a; b.example.com b; c.example.com c; } upstream a { server 127.0.0.1:60088; ### A站点监听端口,xray xtls伪装站点 } upstream xtls { server 127.0.0.1:4443; ### 你的Xray端口 } upstream b { server 127.0.0.1:60001; ### B站点监听端口,业务站点 } upstream c { server 127.0.0.1:60002; ### C站点监听端口,业务站点 } server { listen 443 reuseport; listen [::]:443 reuseport; proxy_pass $orzlee; ssl_preread on; proxy_protocol on; } server { ### Xray XTLS listen 127.0.0.1:60088 proxy_protocol; proxy_pass xtls; } } a.example.com.conf配置(伪装站点): server { listen 80; listen [::]:80; server_name a.example.com; return 301 https://$http_host$request_uri; } server { ### 伪造站点由Xray处理SSL listen 127.0.0.1:60003 proxy_protocol; ### xray http/1.1 listen 127.0.0.1:60004 http2 proxy_protocol; ### xray http/2 set_real_ip_from 127.0.0.1; real_ip_header proxy_protocol; port_in_redirect off; ###重定向去掉端口号 server_name a.example.com; index index.html index.htm index.php default.php default.htm default.html; root /var/www/a.example.com; ... } b.example.com.conf配置(其他业务站点配置照葫芦画瓢): server { listen 80; server_name b.example.com; rewrite ^(.*) https://b.example.com$1 permanent; } server { listen 127.0.0.1:60001 proxy_protocol ssl http2; set_real_ip_from 127.0.0.1; ### 获取真实客户IP,不然全是127.0.0.1 real_ip_header proxy_protocol; port_in_redirect off; ###重定向去掉端口号。不然类似 try_files nginx帮你重定向时,你浏览器上都带了60003这样的端口 ssl_certificate b.example.com.cer; ### 证书换成你的 ssl_certificate_key b.example.com.key; ### 证书换成你的 server_name b.example.com; root /var/www/b.example.com; index index.php index.html index.htm; ... } 配置Xray 服务端配置: { "log": { "access": "/var/log/xray/access.log", "error": "/var/log/xray/error.log", "loglevel": "warning" }, "inbounds": [ { "listen": "127.0.0.1", "port": 4443, "protocol": "vless", "settings": { "clients": [ { "id": "你的UUID", "flow": "xtls-rprx-direct" } ], "decryption": "none", "fallbacks": [ { "dest": 60003, "xver": 1 }, { "dest": 60004, "alpn": "h2", "xver": 1 } ] }, "streamSettings": { "network": "tcp", "security": "xtls", "xtlsSettings": { "alpn": [ "h2", "http/1.1" ], "minVersion": "1.3", "certificates": [ { "certificateFile": "b.example.com.cer 记得换证书", "keyFile": "b.example.com.key 记得换证书" } ] } }, "sniffing": { "enabled": true, "destOverride": [ "http", "tls" ] } } ], "outbounds": [ { "protocol": "freedom" } ] } 客户端看作者说明吧,值得一看:Outbounds 可用协议列表-VLESS,flow仔细看看。 结语 本来折腾Xray的,结果Nginx折腾大半天。虽然掉坑里了,总算是爬出来了,受益匪浅! 通配符证书用起来省事,碰到坑了一下还不好找问题。就今天这个坑上网找都不知道怎么描述,基本上找不到相关问题,比较冷门。之前参考其他博主Nginx SNI配置发现有其他同学也有这样的问题,但是无从查起,不了了之! 遇到这个坑不长记性都难。
2021年04月13日
8,662 阅读
52 评论
3 点赞
2020-06-23
IOS14-beta-尝鲜
前言 WWDC20 今天凌晨已经召开,与以往不同,这届是录播方式,可能与疫情有关! 整个开发者大会将近两个小时,我只特意关注了IOS14部分。没有那些炸天的新特性,大多数还是一些体验改进。 介绍 ios14描述文件下载 小组件 搜索页面小组件有形状多样化,而且长按还可以直接添加到桌面,添加到桌面会叠加你所使用的小组件,你可以向上或者向下翻动,显示更多。 翻译APP 一直使用google-翻译,IOS14新增了自带的翻译APP。 隐藏APP页面 在IOS14下可以隐藏其他APP页面,只保留主页面,其他被隐藏的app都会集中在APP资源库,也就是最后一页。 长按页面空白处,再点击dock栏上面的小点点就可以根据自己的喜欢隐藏页面了。 APP 资源库 APP资源库包含所有APP,并且会自动归类,大图标是经常使用的APP,而小图标是不常使用的APP,点击小图标会列出该类所有APP。 向下拉或者点击搜索,所有APP会已开头字母或者拼音首写字母排序,这样就方便多了。 来电更友好 来电不再是全屏显示了,可以继续干别的,向上推会缩起来,时间显示位置会有一个小电话的动画效果。锁屏界面还是全屏的。 vedio 画中画 在safari网页中播放的视频可以使用画中画功能,在设置-通用-画中画中可以关闭facetime和视频app返回页面时自动画中画功能。其他APP暂未发现此功能,说不定以后会支持。画中画只能拖放到四个角,不能放在任何你想放的位置。 向左或者向右可以把视频隐藏起来,但是还是在播放。 新增点击手机背部功能 在设置-辅助功能-触控-轻点背面中可以设置,分别为轻点两下和三下,可配置预设功能。 quantumultX 用户可能在wifi下其他APP没有网络 因为quantumultX作为代理,接管了路由,所以要开启本地网络权限。 按照作者的说明添加,并且允许即可。本机IP地址查看已连接wifi中的IP地址填上,如果出现无法链接服务器一般是已经允许,或者换wifi中的网关地址再试。 其实我以上方式都不行,估计是允许了,开机自动启动quantumultX时看到提示错误,重新开关下就好了。 结语 这次IOSBeta版本并没有太多BUG,至少没有发现严重影响使用的BUG。APP情况大多数都OK。不像IOS13Beta刚出来那会,wifi下电话都打不进来,漏接不少电话。虽然这次没有多少BUG,但是也确实没有很惊艳的功能,慢慢等IOS15吧............
2020年06月23日
1,166 阅读
0 评论
1 点赞
2020-03-22
QuantumultX-IOS家族又添一员大将
前言 之前用过Suger、Shadowrocket,Suger由于价格昂贵而且特别需要的协议支持太少没有再购买新版本APP。Shadowrocket便宜实惠,协议支持齐全,很不错。但是Suger和QuantumultX有更加强大的功能,定时任务以及完善的MITM支持(Shadowrocket的MITM一直存在BUG)。有了MITM就可以篡改请求,实现一些爆炸的想法。 QuantumultX界面设计不亚于Suger,功能相对Suger相同,但是支持的协议更多,而且价格便宜不少,可惜只能国外Apple Store才能购买(相信大家都懂)。 QuantumultX有反盗版机制,不开启iCloud的情况下只能支持8太设备,开启iCloud多了三个独立授权名额,理论上通过iCloud可以授权无数台。以下是作者twitter说明: 使用 基本使用方法其实网上不少,对于开发者来说其实很简单,反之可能有点难度。分流、重写、MITM这些规则网上很多,像是神机规则、lhie1大神规则等等,都非常好用。神机规则貌似作者精力有限已经停止维护了。 节点自己部署,或者机场订阅,不了解机场可以看看毒药机场测速和简介,有排名先后,先上张图自己理解: 脚本 脚本是QuantumultX非常有可玩性的功能,例如签到脚本,各种VIP脚本,每天推送天气信息,淘宝、京东商品历史价格以及你能想到的其他功能脚本。 淘宝、京东商品历史价格这个蛮有意思的,我也在用,看看历史价格发现蛮多商品相对以往都翻倍的涨,防剁手必备啊。 yichahucha大神脚本中的jd_price.js,tb_price.js分别是京东和淘宝历史价格,Suger和QuantumultX两个版本通用。 还有netflix评分脚本nf_rating.js,用法看项目介绍,蛮有意思的。 NobyDa大神脚本,主要是签到功能很强大,JD_DailyBonus.js 京东自动签到,可以领取20+签到,京东豆,钢镚,红包和优惠券。 是不是很有意思? 上图中task_local是定时任务模块配置,也可以在设置构造请求中添加。 rewrite_local是本地重写脚本模块,主要是匹配链接通过一些脚本修改请求响应内容,达到想要的目的。 Mitm解密Https请求模块,其中多个域名不要重复写hostname = xxx.xxx.xx,应该: hostname = api.xxx.com, www.abc.com, ... nzw9314大佬汇集了上述以及其他大神的脚本,你也可以只关注nzw9314,他会自动同步其他大神的更新。 现在几乎全民Https,要是用以上脚本,务必开启MITM,否则脚本可能无法成功执行。 脚本同步 QuantumultX最好开启iCloud,将脚本存放至iCloud,方便设备间同步,也可以使用Working Copy更新仓库代码。 开启iCloud 点击QuantumultX右下角图标,滑到底部,其他设置中。 借上图说说排除路由 0.0.0.0/31功能就是隐藏VPN图标, 始终开启开机自动打开,简直爆炸 开启iCloud后,文件APP中应该有QuantumultX文件夹,里面是这样: 当然,刚刚开启iCloud应该都是空的。 Image: 图标文件夹 Profiles: 配置文件文件夹 Scripts: 脚本文件夹 在Scripts文件夹下添加一个空格文件夹,待会用来存放大神们的脚本库。 下载Working Copy,然后打开。 点击右上角+,然后点击Setup synced directory。 选择你刚刚新建的文件夹 选择后会弹出test syncing, 点击Done 点击Add Remote添加远程库 填入库地址到URL,库地址为git地址,不是网址。 如果不是自己的仓库或者没有git push权限务必关掉Allow Push 然后点击Save-Fetch获取。 如果报错或者获取失败,请将上个页面中的Branch切换为master, 如果Current branch是空的,就选择分支,一般是master分支,当然也有不同的。 回到主界面,下拉就会更新所有库的代码,更新后记得点击顶部绿色提示框合并代码,不然拉了也白拉。 有了同步之后事情就简单多了,看图片: nzw9314/NobyDa/JD-DailyBonus/JD_DailyBonus.js 这里是相对目录,相对于iCloud/QuantumultX/Scripts目录下的文件。以后需要更新就去Working Copy往下这么一拉,点击绿色提示合并代码就OK了,QuantumultX可能有缓存,需要重新开关一下。 结语 QuantumultX确实挺有意思,我自己也折腾了个机车游侠的自动签到脚本,知乎去内容广告。其实会点javasrcipt就能轻松搞定,QuantumultX-Github有很多示例可以参考。
2020年03月22日
7,203 阅读
0 评论
1 点赞
2018-11-22
shadowsocksR科学上网
前言: 翻墙对于开发者来说也是非常重要的,国外开发者喜欢分享,互助,相对于国内这种气氛很难得。 Shadowsocks(R) 这个就不多介绍了,服务端可以使用秋水逸冰 Shadowsocks 一键安装脚本(四合一),可以省下不少事情。更多详细信息可以去秋水大大的博客了解(貌似被墙了,不然我也不会写下面的安装方法了,翻出去了再看吧!!!)。 1. 服务端 安装方法 以root身份执行如下命令: wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh chmod +x shadowsocks-all.sh ./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log 安装完成 这个界面还是记录一下,在配置客户端的时候会用得到。 Congratulations, your_shadowsocks_version install completed! Your Server IP :your_server_ip Your Server Port :your_server_port Your Password :your_password Your Encryption Method:your_encryption_method Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients) ss://your_encryption_method:your_password@your_server_ip:your_server_port Your QR Code has been saved as a PNG file path: your_path.png Welcome to visit:https://teddysun.com/486.html Enjoy it! 卸载方法 如果安装多个版本必须执行多次分别卸载。 以root身份执行如下命令: ./shadowsocks-all.sh uninstall 启动脚本 启动脚本后面的参数含义,从左至右依次为:启动,停止,重启,查看状态。 Shadowsocks-Python 版: /etc/init.d/shadowsocks-python start | stop | restart | status ShadowsocksR 版: /etc/init.d/shadowsocks-r start | stop | restart | status Shadowsocks-Go 版: /etc/init.d/shadowsocks-go start | stop | restart | status Shadowsocks-libev 版: /etc/init.d/shadowsocks-libev start | stop | restart | status 个版本默认配置文件 Shadowsocks-Python 版: /etc/shadowsocks-python/config.json ShadowsocksR 版: /etc/shadowsocks-r/config.json Shadowsocks-Go 版: /etc/shadowsocks-go/config.json Shadowsocks-libev 版: /etc/shadowsocks-libev/config.json 2. 客户端 客户端常用的有三种,分别为shadowsocks、shadowsocksR、sstap,这三种客户端网上教程都不少,无奈大多数已经被墙。由于shadowsocksR也支持shadowsocks协议,更多时候还是使用shadowsocksR客户端。 shadowsocksR windows 客户端 Github 下载 需要电脑已经安装 Microsoft .NET Framework 4.6.2 或更高的版本以及 Microsoft Visual C++ 2015 Redistributable (x86) macOS 客户端 Github 下载 android 客户端 Github 下载 android 客户端 Google Store 下载 IOS客户端 到apple store下载shadowrocket 或 surge,都是收费APP。 surge支持原生shadowsocks协议(非shadowsocksR),这款APP作者开发目的是一款IOS上的网络调试工具,并不是为代理而生(并且目前价格不低,如果单纯为了翻墙建议还是考虑其他APP)。这款APP在surge3之前orzlee也是用过的,稳定性非常好。只是surge3出来之后价格居高不下,而且还需要升级付费授权就考虑其他APP了(其实就是价格太高了,只是翻墙不值)。 shadowrocket支持协议比较广泛,像其他如shadowsocks、shadowsocksR、v2ray等等。orzlee目前也是使用的这款APP,使用体验和稳定性方面都已经很不错了,功能性也很强。推荐一个配置文件吧 lhie1 Rules 蛮不错的,而且作者也一直在更新。 3.windows shadowsocksR使用方法 下载上文提到的windows 客户端 Github 下载,解压运行(ShadowsocksR-dotnet2.0.exe和ShadowsocksR-dotnet4.0.exe没有区别,取决于windows的.Net Framework版本)。使用秋水逸冰 Shadowsocks 一键安装脚本(四合一)配置服务器后会生成二维码和连接,在安装完成界面会看到信息。复制ssr链接(其实二维码中也是这个链接),按照下图操作会自动将服务器信息添加上去。 在开启代理的时候就默认修改了系统代理(浏览器代理),可以打开浏览器看看是否能翻墙了。 如果不能翻墙,先检查浏览器设置。 服务器shadowsocks代理端口是否开放,服务器是否被墙。 chrome浏览器的话推荐使用Proxy SwitchyOmega. 这里就不再写其他客户端使用放法了。翻墙之后可以搜索到很多资源,更多还是需要靠自己搜索。 结语 这只是最基本的翻墙,还有很多其他方法。 列如: 小宝-梅林固件 v2ray WireGuard Brook 对于android 和 os上的翻墙,我觉得ios生态更好,这多亏了ios9推出的网络扩展。android没有google服务真的很伤。
2018年11月22日
7,805 阅读
0 评论
0 点赞