首页
留言
动态
归档
推荐
音乐
工具
Search
1
Emby公益服-上万部电影电视剧免费看
62,162 阅读
2
openwrt-docker部署lxk0301京东自动签到脚本
12,555 阅读
3
QuantumultX-京东签到撸京东豆
10,911 阅读
4
LXK0301京东签到脚本-自动提交互助码
9,333 阅读
5
微信-域名被封监测以及自动更换被封域名
9,005 阅读
随便写写
科学上网
Web开发
瞎折腾
Search
标签搜索
quantumultx
laravel
openwrt
laravel nova
laradock
telegram
薅羊毛
google adsense
jd_scripts
京东签到
ubuntu
oh-my-zsh
web开发环境
nginx
工具
shadowsocks shadowsocksR
RBAC
权限管理
内网穿透
Python
orzlee
累计撰写
44
篇文章
累计收到
595
条评论
首页
栏目
随便写写
科学上网
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日
7,812 阅读
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,088 阅读
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日
6,911 阅读
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,614 阅读
0 评论
0 点赞