首页
Search
1
Sublime Text 4 正式版发布了,自己动手注册激活以及汉化
535 阅读
2
Lark飞书国际版,免费邮局支持50用户,200GB容量,可SMTP发信
262 阅读
3
Windows激活之路:通过HWIDGen申请永久数字许可证
204 阅读
4
甲骨文云(Oracle Cloud)免费开通ARM云服务器
202 阅读
5
Windows激活之路:将Windows 10 LTSC转成Win10专业版激活
178 阅读
网络资讯
技术教程
活动线报
VPS主机
实用工具
随手小记
登录
Search
标签搜索
VPS
服务器
腾讯云
免费
域名
阿里云
数据库
优惠券
Cloudflare
Github
中国联通
代金券
Docker
中国移动
chrome
JetBrains
Linux
Xshell
百度网盘
联通
小 萌
累计撰写
266
篇文章
累计收到
0
条评论
首页
栏目
网络资讯
技术教程
活动线报
VPS主机
实用工具
随手小记
页面
搜索到
70
篇与
的结果
2019-12-11
TCPing 一款检测端口是否开启和TCP延迟的工具
全篇转载自 @如有乐享 ,由 小萌 进行编辑,本文仅作存档使用在日常玩服务器过程中,我们经常需要测试一下IP或者域名的延迟,一般直接PING 域名或IP即可~这种 PING 实际上走的是ICMP协议,其实我们用的最多的是TCP协议。如果直接测试TCP协议的网络延迟,应该是更准确的!下面本文介绍一款工具,TCPing,不仅可以使用TCP协议的延迟,还能检测端口的连通情况。对于一些禁PING的域名或者IP,我可以直接利用TCPing来查看延迟情况!Windows版下载地址:https://www.elifulkerson.com/projects/tcping.php安装步骤:下载 tcping.exe 文件到 C:\Windows\System32\ 即可!命令介绍:打开CMD命令控制台,输入 tcpingNAME tcping - simulate "ping" over tcp by establishing a connection to network hosts. Measures the time for your system to [SYN], receive the target's [SYN][ACK] and send [ACK]. Note that the travel time for the last ACK is not included - only the time it takes to be put on the wire a tthe sending end. SYNOPSIS tcping [-tdsvf46] [-i interval] [-n times] [-w interval] [-b n] [-r times][-j depth] [--tee filename] [-f] destination [port] DESCRIPTION tcping measures the time it takes to perform a TCP 3-way handshake (SYN, SYN/ACK, ACK) between itself and a remote host. The travel time of the outgoing final ACK is not included, only the (minimal) amount of time it has taken to drop it on the wire at the near end. This allows the travel time of the (SYN, SYN/ACK) to approximate the travel time of the ICMP (request, response) equivalent. OPTIONS -4 Prefer using IPv4 -6 Prefer using IPv6 -t ping continuously until stopped via control-c -n count send _count_ pings and then stop. Default 4. -i interval Wait _interval_ seconds between pings. Default 1. Decimals permitted. -w interval Wait _interval_ seconds for a response. Default 2. Decimals permitted. -d include date and time on every output line -f Force sending at least one byte in addition to making the connection. -g count Give up after _count_ failed pings. -b type Enable audible beeps. '-b 1' will beep "on down". If a host was up, but now its not, beep. '-b 2' will beep "on up". If a host was down, but now its up, beep. '-b 3' will beep "on change". If a host was one way, but now its the other, beep. '-b 4' will beep "always". -c only show output on a changed state -r count Every _count_ pings, we will perform a new DNS lookup for the host in case it changed. -s Exit immediately upon a success. -v Print version and exit. -j Calculate jitter. Jitter is defined as the difference between the last response time and the historical average. -js depth Calculate jitter, as with -j but with an optional _depth_ argument specified. If _depth_ is specified tcping will use the prior _depth_ values to calculate a rolling average. --tee _filename_ Duplicate output to the _filename_ specified. Windows can still not be depended upon to have a useful command line environment. Don't tease me, *nix guys. --append When using --tee, append to rather than overwrite the output file. --file Treat the "destination" option as a filename. That file becomes a source of destinations, looped through on a line by line basis. Some options don't work in this mode and statistics will not be kept. destination A DNS name, an IP address, or (in "http" mode) a URL. Do not specify the protocol ("http://") in "http" mode. Also do not specify server port via ":port" syntax. For instance: "tcping http://www.elifulkerson.com:8080/index.html" would fail Use the style: "tcping www.elifulkerson.com/index.html 8080" instead. port A numeric TCP port, 1-65535. If not specified, defaults to 80. --header include a header with the command line arguments and timestamp. Header is implied if using --tee. HTTP MODE OPTIONS -h Use "http" mode. In http mode we will attempt to GET the specified document and return additional values including the document's size, http response code, kbit/s. -u In "http" mode, include the target URL on each output line. --post Use POST instead of GET in http mode. --head Use HEAD instead of GET in http mode. --get Shorthand to invoke "http" mode for consistency's sake. --proxy-server _proxyserver_ Connect to _proxyserver_ to request the url rather than the server indicated in the url itself. --proxy-port _port_ Specify the numeric TCP port of the proxy server. Defaults to 3128. --proxy-credentials username:password Specify a username:password pair which is sent as a 'Proxy-Authorization: Basic' header. RETURN VALUE tcping returns 0 if all pings are successful, 1 if zero pings are successful and 2 for mixed outcome. BUGS/REQUESTS Please report bugs and feature requests to the author via contact information on http://www.elifulkerson.com AVAILABILITY tcping is available at http://www.elifulkerson.com/projects/tcping.php Examples: C:\ tcping www.elifulkerson.com Probing 64.22.103.201:80/tcp - Port is open - time=25.739ms Probing 64.22.103.201:80/tcp - Port is open - time=21.842ms Probing 64.22.103.201:80/tcp - Port is open - time=27.701ms Probing 64.22.103.201:80/tcp - Port is open - time=27.489ms Ping statistics for 64.22.103.201:80 4 probes sent. 4 successful, 0 failed. Approximate trip times in milli-seconds: Minimum = 21.842ms, Maximum = 27.701ms, Average = 25.693ms C:\tcping -h www.elifulkerson.com ** Requesting "" from www.elifulkerson.com: (for various reasons, kbit/s is an approximation) Probing 64.22.103.201:80/tcp - HTTP is open - time=31.288ms rcv_time=31.951 status=200 bytes=4052 kbit/s=~1014.554 Probing 64.22.103.201:80/tcp - HTTP is open - time=29.553ms rcv_time=30.947 status=200 bytes=4052 kbit/s=~1047.479 Probing 64.22.103.201:80/tcp - HTTP is open - time=29.871ms rcv_time=31.727 status=200 bytes=4052 kbit/s=~1021.728 Probing 64.22.103.201:80/tcp - HTTP is open - time=29.976ms rcv_time=36.002 status=200 bytes=4052 kbit/s=~900.393 Ping statistics for 64.22.103.201:80 4 probes sent. 4 successful, 0 failed. Approximate trip times in milli-seconds: Minimum = 29.553ms, Maximum = 31.288ms, Average = 30.172ms使用技巧:tcping [命令参数] 服务器地址(IP/域名) [服务器端口] -t : 连续 TCPing ,直到使用 Ctrl+C 键停止 示例:tcping -t 1.1.1.1 80 -n 5 : TCPing 5次后停止 示例:tcping -n 5 1.1.1.1 80 -i 5 : 每隔 5秒 TCPing 一次 示例:tcping -i 5 1.1.1.1 80 -w 0.5 : 设置超时时间为 0.5秒(1秒=1000毫秒),单位 秒 示例:tcping -w 0.5 1.1.1.1 80 -d : 在每行返回信息中加入时间信息 示例:tcping -d 1.1.1.1 80 -s : 当 TCPing 测试成功后(在超时时间以内返回 TCPing 延迟数据)自动停止 TCPing 示例:tcping -s 1.1.1.1 80 -4 : 优先 IPv4(如果一个域名有 IPv4 和 IPv6 解析,那么走 IPv4) 示例:tcping -4 www.google.com 80 -6 : 优先 IPv6(如果一个域名有 IPv4 和 IPv6 解析,那么走 IPv6) 示例:tcping -6 www.google.com 80 --file : TCPing 将逐行循环遍历文件内的 服务器IP/域名 信息(一行一个,支持端口,例如:1.1.1.1 443) 示例:tcping --file D:\abc\1.txt -v : 显示版本号 示例:tcping -v # 如果你没有写服务器地址的端口,那么默认为 80 端口 # 其实还有很多命令参数,只是大都用不上,所以省略了Linux版Linux平台中类似的工具非常多,比如nping , nc 等~这里我们介绍一款比较轻量的TCPing工具~~~先用apt或者yum安装tcptraceroute bc这两个工具,然后执行 yum install -y tcptraceroute yum install -y bc cd /usr/bin wget http://www.vdberg.org/~richard/tcpping chmod +x tcpping mv tcpping tcpingtcpping v1.7 Richard van den Berg <richard@vdberg.org> Usage: tcping [-d] [-c] [-C] [-w sec] [-q num] [-x count] ipaddress [port] -d print timestamp before every result -c print a columned result line -C print in the same format as fping's -C option -w wait time in seconds (defaults to 3) -r repeat every n seconds (defaults to 1) -x repeat n times (defaults to unlimited) See also: man tcptraceroute
2019年12月11日
3 阅读
0 评论
0 点赞
2019-10-11
推荐开源CloudFlare Partner可视化管理面板
全篇转载自 @如有乐享 ,由 小萌 进行编辑,本文仅作存档使用最近打算将小站接入CF Partner,找了一圈发现有大佬开源了一个管理面板挺不错的!PHP语言开发的,在Github上开源了!开源地址https://github.com/ZE3kr/Cloudflare-CNAME-Setup环境要求PHP 7.0+ (需要 cURL, APCu Cache, JSON 和 Gettext 插件)网页服务器 (Nginx, Apache, 等)Cloudflare Partner 账户安装步骤Docker安装运行以下命令即可!docker run -d \ -e HOST_KEY=填写你自己的 Partner API Key \ -e HOST_MAIL=填写你自己的 Partner 邮箱 \ -e TITLE=填写自定义标题 \ -p 端口号:80 \ ze3kr/cloudflare手动安装1)环境安装,安装了PHP7.2 + Nginx。2)申请一个SSL证书(如果不开启HTTPS可以不申请)3)下载开源代码,zip包下载地址:https://github.com/ZE3kr/Cloudflare-CNAME-Setup/archive/master.zip4)在服务器上部署一个网站,将源码上传即可!5)重命名 config.example.php 成 config.php 。替换KEY 和 EMAIL保存即可!define('HOST_KEY', 'e9e4498f0584b7098692512db0c62b48'); define('HOST_MAIL', 'ze3kr@example.com');面板特性管理你的所有 DNS 记录。此面板使用了 Cloudflare API v4,所以支持各种格式的 DNS 记录。高级统计。你可以查看 过去一整年 的统计信息,而不仅仅是一个月。同时支持 NS 接入。此面板提供了 NS 接入信息,所以你可以随时切换到 Cloudflare DNS。此外,这个面板也支持 DNSSEC。同时支持 IP 接入。你可以看到 DNS 的 Anycast IPv4 和 IPv6 信息,这样你可以安全地在根域名下使用第三方 DNS。适配移动设备。支持多种语言。常见问题Q:在其他合作伙伴接入的域名,能否在这里登陆? 可以。Q:如何从 NS 接入转成从这个面板接入?备份现有域名的 DNS 记录。从备份中恢复,切换到另一个 DNS 解析商。(可选的)在 Cloudflare 上删除你的域名 (如果你没有完成第二部则可能会导致你的网站在一段时间内无法访问)在这个面板上重新添加域名。在这个面板上配置 DNS 记录。删除已有的 DNS 记录然后重新添加 CDN 的记录。(如果你在步骤二中切换到了另一个 DNS 解析商)Q:CNAME 接入的好处更加灵活,因为你可以使用任何一个 DNS 提供商。将 Cloudflare 作为一个备份服务器,或者使用多个 CDN。可以免费支持四级域名下的 SSL!例如像 dev.project.example.com 这样的域名,Cloudflare 也会自动签发 SSL 证书,这是因为 CNAME 接入签发的是 SSL for SaaS,它会自动的为每一个字域名签发证书。Q:使用 Cloudflare 的好处 你不需要在服务器端安装任何软件。只需要在这个面板配置好源站服务器信息,删除已有记录并 CNAME 到 Cloudflare 的服务器,或者直接使用 Cloudflare DNS 即可!无限 DDOS 防御全球 CDN。你的网站会因此变得更快。I'm Under Attack™ 模式可以自动清洗恶意流量。Always Online ™ 让你的网站永远在线。支持 Page Rules. 你可以自定义缓存规则,配置 301 或 302 跳转以及更多。
2019年10月11日
51 阅读
0 评论
0 点赞
2019-10-04
使用易博通eSender APP支持接听拨打电话
全篇转载自 @如有乐享 ,由 小萌 进行编辑,本文仅作存档使用之前博主介绍过易博通电话号码:申请易博通香港电话号码只需60元/年(支持国内号码) ,对于接码使用确实不错很方便!唯一不足的地方就是不能接打电话。虽然接听电话有语音信箱~9月初易博通全新推出eSender手机App,让用户可透过此App 打出/接听电话和收发短信,无需SIM卡,随时随地保持联络。更多内容请点击: 易博通应用下载IOS:https://apps.apple.com/cn/app/id1472477960安卓:https://play.google.com/store/apps/details?id=com.multibyte.esender.jiedian百度网盘:链接: https://pan.baidu.com/s/1SF34UcxBymOGNjkCtcnlFA 提取码: 9jve功能说明1)可接听电话(接听免费)2)可拨打电话,费用低至HK$0.3/分钟3)接收短信:当有短信发送到易博通号码,微信及 eSender App可同时收到,费用全免。4)发送短讯:收费按每个讯息收费,费用于易博通户口余额扣除(中国指定号码收费为 HK$1/个;其他国家 /地区号码收费为 HK$3/个)。5)支持充值,APP点击右下角「我」,再按「充值中心」选择号码进行充值。使用说明易博通App必须和开通易博通有效号码的微信处于 同一手机 方可正常使用(需要微信授权登陆)。1)请先于IOS 或Android 搜寻「易博通」或「eSender 」,再下载eSender App 。无法访问Google Play 的Android 手机请访问上面的百度网盘地址!2)开启eSender App后,点击「微信登入」,系统会根据手机上的微信户口作为登入户口。同意条款及细则即可使用。3)然后可以愉快的操作了!注意事项eSender App只适用于有效易博通的中国内地或香港号码之客户使用( 已有SIM 卡/eSIM 的易博通号码不可以登记eSender APP )易博通App必须和开通易博通有效号码的微信处于同一手机方可正常使用(需要微信授权登陆)。接打电话都是走的网络电话,网络决定你的连接和通话质量。参考:https://mp.weixin.qq.com/s/EviFqMVmo91Bu0tZKHe_lA
2019年10月04日
62 阅读
0 评论
0 点赞
2019-09-27
XShell中转代理隧道设置,提高操作流畅速度!
全篇转载自 @如有乐享 ,由 小萌 进行编辑,本文仅作存档使用Xshell是一款我们常用的连接Linux服务器的工具!由于要管理一些境外的服务器,其中有很多服务器国内访问特别慢,甚至直接Xshell都连不上!这时候我们就需要一个中转服务器,中转服务器介于国外服务器和我本地中间,来提升操作流程度。常规方法连接境外服务器,我们需要先连上中转服务器。然后通过SSH命令来连接其他机器!隧道代理其实Xshell提供一个代理方式!这样通过中转服务器控制其他服务器更方便了!比如:A服务器:中转服务器B服务器:境外服务器1)首先设置A服务器,启动一个代理监听!【属性】-【隧道】 - 【添加】2)设置转移规则类型选择:Dynamic(SOCKS4/5)监听端口:11081 (端口随便设置,只要不冲突即可)3)设置成功后,Xshell登陆上A服务器。4)B服务器设置代理【属性】- 【代理】- 从代理服务器下拉框选择一个代理!如果没有,点击【浏览】设置代理。5)代理列表 - 【添加】 - 设置代理服务器主机名:127.0.0.1端口:11081 (上面设置的端口)6)代理服务器选择刚才我们添加的即可!7)登录B服务器!可以看到走了11081的代理~注意事项Xshell必须连上A服务器,代理才会生效!这个Xshell代理还能代理其他的程序,如浏览器等!这里不介绍了!如果境外服务器ping延迟超过300,Xshell连接后操作基本上是废了。
2019年09月27日
49 阅读
0 评论
0 点赞
2019-09-11
注册激活Navicat全系产品的开源代码分享
全篇转载自 @如有乐享 ,由 小萌 进行编辑,本文仅作存档使用2021年5月15日 18点51分 更新: 最近马甲又重装系统了!数据库管理工具俺又选择了Navicat Premium,最新版本为 Navicat Premium 15.0.25!官网下载!激活!哦了!有童鞋说本文19年介绍的开源仓库已经不能访问了!其实@DoubleLabyrinth 一直在更新,只不过是更隐秘了。下面编译后的文件:navicat-keygen-for-x64.zip: https://n802.com/f/21259585-496073096-ce54c6 (访问密码:9197) navicat-keygen-for-x86.zip: https://n802.com/f/21259585-496073048-d6ed07 (访问密码:9197)激活过程和之前的方式类似!开源仓库自己上Github找吧!前一段儿时间我水了一篇文章介绍了PJ版本的Navicat,当时有大佬PM我,说有一个开源的注册机。当时也没时间测试一直没写文章!最近几天我的Navicat出问题了,打算新装一下!正好试一试这个开源代码!果然可行!!博主亲测:Navicat Premium 12.1.22 + Windows 10 X64 激活成功!开源地址https://github.com/DoubleLabyrinth/navicat-keygen软件下载访问 https://www.navicat.com.cn/products,选择自己需要的产品点击【免费试用】即可下载软件!操作过程1)下载激活程序!注意X64的系统要选择X64的软件!2)将软件包解压,将里面的2个文件复制到D盘!3)以管理员运行 CMD 命令(按Win + X,选择 命令提示符(管理员))4)分别执行以下命令!其中第一条命令中引号中的内容伟Navicat安装目录!navicat-patcher.exe "C:\Program Files\PremiumSoft\Navicat Premium 15"执行命令后需要按一下回车!最后出现以下内容!最后执行下面的命令navicat-keygen.exe -text ./RegPrivateKey.pem执行第二条命令后,选择产品和语言以及版本!最后生成一个激活码。Select Navicat product: 0. DataModeler 1. Premium 2. MySQL 3. PostgreSQL 4. Oracle 5. SQLServer 6. SQLite 7. MariaDB 8. MongoDB 9. ReportViewer (Input index)> 1 Select product language: 0. English 1. Simplified Chinese 2. Traditional Chinese 3. Japanese 4. Polish 5. Spanish 6. French 7. German 8. Korean 9. Russian 10. Portuguese (Input index)> 1 (Input major version number, range: 0 ~ 15, default: 12)> 12 Serial number: NAVO-2ORP-IN5A-GQEE5)启动Navicat程序 - 菜单 - 帮助 - 注册。将序列号填入。6)电脑断网,然后点击【激活】- 选择【手动激活】会生成请求码7)将请求码复制到命令提示符框内,按 2 次回车!会生成激活码!8)将激活码复制到升级框内,点击【激活】,然后激活成功!注意事项1)之前使用其他破解版,需要卸载后重启电脑,然后删除原安装目录。2)操作过程中错误,从头再来一次即可。3)PJ输入的组织名不要太长!其他路子教师和学生申请!https://www.navicat.com.cn/sponsorship/education/student
2019年09月11日
5 阅读
0 评论
0 点赞
2019-09-07
Navicat连接Mysql,打开数据表非常慢解决方法
全篇转载自 @如有乐享 ,由 小萌 进行编辑,本文仅作存档使用博主最近开发中遇到关于Navicat经常非常慢接近卡死的问题!困扰了我很久,今天终于知道原因了!这里分享给大家!希望对大家有所帮助!问题描述最近公司换网络了,突然发现有时候使用Navicat打开一张表会非常慢! 即使是表中没数据也是慢 !最开始的时候,我怀疑是网络的问题!但是ping数据库服务器IP也不丢包。数据库也是通过内网访问的!直接用SQL语句查询结果也是非常快的!原因分析我试了连接其他数据库,貌似这个问题不明显!只有连接这一个数据库出现类似问题!最终找到原因了!Mysql服务器端会定时清理长时间不活跃空闲的数据库连接,以此优化数据库的性能。Navicat客户端有一个设置:保持连接间隔,默认是240秒!意思是,客户端在用户无任何交互性操作时,会每隔240秒给Mysql服务端发送一次数据请求。以此来保持数据库连接活跃!然而Navicat设置的心跳包间隔太长了,Mysql服务端直接将连接清理掉了。当我们打开一张表的时候,Navicat还是使用旧的连接去请求数据,发现旧的连接超时不能用了,最后又申请了一个新的连接,再去请求数据!所以导致我们打开一张表时间需要挺久的!解决方案Navicat - 编辑数据库连接 - 高级 - 勾选保持连接间隔 - 输入框设置为30 - 点击确定!
2019年09月07日
1 阅读
0 评论
0 点赞
2019-07-18
利用CloudFlare Worker 免费部署 JSProxy 服务
全篇转载自 @如有乐享 ,由 小萌 进行编辑,本文仅作存档使用JSProxy 一个基于浏览器端 JS 实现的在线代理,这里不多介绍!本文主要介绍一下利用CloudFlare Worker 来搭建一个JSProxy服务。CloudFlare Worker 是 CloudFlare 的边缘计算服务。开发者可通过 JavaScript 对 CDN 进行编程,从而能灵活处理 HTTP 请求。这使得很多任务可在 CDN 上完成,无需自己的服务器参与。CFW免费服务,支持每天10 万次免费请求!基本也够用了!项目介绍项目地址:https://github.com/EtherDream/jsproxy准备工作Cloudflare 账号一个使用教程1)打开 https://workers.cloudflare.com,登陆上你的 Cloudflare 账号激活 Workers 服务然后创建一个 Workers【Create a Worker】2)修改一下子域名,创建出来的域名格式 自定义的内容.Cloudflare用户名.workers.dev3)复制 https://raw.githubusercontent.com/EtherDream/jsproxy/master/cf-worker/index.js 的内容到左侧代码(Script)区域文章最下方有代码备份!!4)先点击【Run】右侧看执行效果,再点击 【Save and deploy】 部署代码5)届时你可以访问你的站点https://xxx.子域名.workers.dev查看效果进入站点后将线路选择切换为当前站点即可使用特别提示:浏览网站的时候,有时候会提示加载不安全脚本,点击允许即可!代码备份'use strict' /** * static files (404.html, sw.js, conf.js) */ const ASSET_URL = 'https://zjcqoo.github.io' const JS_VER = 8 const MAX_RETRY = 1 const PREFLIGHT_INIT = { status: 204, headers: new Headers({ 'access-control-allow-origin': '*', 'access-control-allow-methods': 'GET,POST,PUT,PATCH,TRACE,DELETE,HEAD,OPTIONS', 'access-control-allow-headers': '--raw-info,--level,--url,--referer,--cookie,--origin,--ext,--aceh,--ver,--type,--mode,accept,accept-charset,accept-encoding,accept-language,accept-datetime,authorization,cache-control,content-length,content-type,date,if-match,if-modified-since,if-none-match,if-range,if-unmodified-since,max-forwards,pragma,range,te,upgrade,upgrade-insecure-requests,x-requested-with,chrome-proxy,purpose', 'access-control-max-age': '1728000', }), } /** * @param {string} message * @param {number} status * @param {any} headers */ function makeRes(message, status = 200, headers = {}) { headers['cache-control'] = 'no-cache' headers['vary'] = '--url' headers['access-control-allow-origin'] = '*' return new Response(message, {status, headers}) } addEventListener('fetch', e => { const ret = fetchHandler(e) .catch(err => makeRes('cfworker error:' + err, 502)) e.respondWith(ret) }) function fetchHandler(e) { const req = e.request const urlStr = req.url const urlObj = new URL(urlStr) if (urlObj.protocol === 'http:') { urlObj.protocol = 'https:' return makeRes('', 301, { 'strict-transport-security': 'max-age=99999999; includeSubDomains; preload', 'location': urlObj.href, }) } switch (urlObj.pathname) { case '/http': return httpHandler(req) case '/ws': return makeRes('not support', 400) case '/works': return makeRes('it works') default: // static files return fetch(ASSET_URL + urlObj.pathname) } } /** * @param {Request} req */ async function httpHandler(req) { const reqHdrRaw = req.headers if (reqHdrRaw.has('x-jsproxy')) { return Response.error() } // preflight if (req.method === 'OPTIONS' && reqHdrRaw.has('access-control-request-headers') ) { return new Response(null, PREFLIGHT_INIT) } let urlObj = null let extHdrs = null let acehOld = false let rawSvr = '' let rawLen = '' let rawEtag = '' const reqHdrNew = new Headers(reqHdrRaw) reqHdrNew.set('x-jsproxy', '1') for (const [k, v] of reqHdrRaw.entries()) { if (!k.startsWith('--')) { continue } reqHdrNew.delete(k) const k2 = k.substr(2) switch (k2) { case 'url': urlObj = new URL(v) break case 'aceh': acehOld = true break case 'raw-info': [rawSvr, rawLen, rawEtag] = v.split('|') break case 'level': case 'mode': case 'type': break case 'ext': extHdrs = JSON.parse(v) break default: if (v) { reqHdrNew.set(k2, v) } else { reqHdrNew.delete(k2) } break } } if (extHdrs) { for (const [k, v] of Object.entries(extHdrs)) { reqHdrNew.set(k, v) } } if (!urlObj) { return makeRes('missing url param', 403) } /** @type {RequestInit} */ const reqInit = { method: req.method, headers: reqHdrNew, } if (req.method === 'POST') { reqInit.body = req.body } return proxy(urlObj, reqInit, acehOld, rawLen, 0) } /** * * @param {URL} urlObj * @param {RequestInit} reqInit * @param {number} retryTimes */ async function proxy(urlObj, reqInit, acehOld, rawLen, retryTimes) { const res = await fetch(urlObj.href, reqInit) const resHdrOld = res.headers const resHdrNew = new Headers(resHdrOld) let expose = '*' let vary = '--url' for (const [k, v] of resHdrOld.entries()) { if (k === 'access-control-allow-origin' || k === 'access-control-expose-headers' || k === 'location' || k === 'set-cookie' ) { const x = '--' + k resHdrNew.set(x, v) if (acehOld) { expose = expose + ',' + x } resHdrNew.delete(k) } else if (k === 'vary') { vary = vary + ',' + v } else if (acehOld && k !== 'cache-control' && k !== 'content-language' && k !== 'content-type' && k !== 'expires' && k !== 'last-modified' && k !== 'pragma' ) { expose = expose + ',' + k } } if (acehOld) { expose = expose + ',--s' resHdrNew.set('--t', '1') } // verify if (rawLen) { const newLen = resHdrOld.get('content-length') || '' const badLen = (rawLen !== newLen) if (badLen) { if (retryTimes < MAX_RETRY) { urlObj = await parseYtVideoRedir(urlObj, newLen, res) if (urlObj) { return proxy(urlObj, reqInit, acehOld, rawLen, retryTimes + 1) } } return makeRes('error', 400, { '--error': 'bad len:' + newLen }) } if (retryTimes > 1) { resHdrNew.set('--retry', retryTimes) } } let status = res.status resHdrNew.set('access-control-expose-headers', expose) resHdrNew.set('access-control-allow-origin', '*') resHdrNew.set('vary', vary) resHdrNew.set('--s', status) resHdrNew.set('--ver', JS_VER) resHdrNew.delete('content-security-policy') resHdrNew.delete('content-security-policy-report-only') if (status === 301 || status === 302 || status === 303 || status === 307 || status === 308 ) { status = status + 10 } return new Response(res.body, { status, headers: resHdrNew, }) } /** * @param {URL} urlObj */ function isYtUrl(urlObj) { return ( urlObj.host.endsWith('.googlevideo.com') && urlObj.pathname.startsWith('/videoplayback') ) } /** * @param {URL} urlObj * @param {number} newLen * @param {Response} res */ async function parseYtVideoRedir(urlObj, newLen, res) { if (newLen > 2000) { return null } if (!isYtUrl(urlObj)) { return null } try { const data = await res.text() urlObj = new URL(data) } catch (err) { return null } if (!isYtUrl(urlObj)) { return null } return urlObj }
2019年07月18日
3 阅读
0 评论
0 点赞
2019-06-13
如何愉快使用网易云音乐,解锁变灰歌曲!
全篇转载自 @如有乐享 ,由 小萌 进行编辑,本文仅作存档使用现在听个歌曲可费劲了,QQ音乐,虾米音乐,网易云音乐 都得安装上!之前很简单的一个事情,现在弄的这么复杂!好多网友比较喜欢网易云音乐里面的歌单,但是好多音乐涉及到版权的问题无法听,开了VIP也不行!下面介绍一个开源项目,来解决这个问题!博主亲测不错!推荐大家本机部署!项目地址https://github.com/nondanee/UnblockNeteaseMusic功能特点解锁网易云音乐客户端变灰歌曲!使用网易云旧链 / QQ / 虾米 / 百度 / 酷狗 / 酷我 / 咕咪 / JOOX 音源替换变灰歌曲链接 (默认仅启用前四)为请求增加 X-Real-IP 参数解锁海外限制,支持指定网易云服务器 IP,支持设置上游 HTTP / HTTPS 代理完整的流量代理功能 (HTTP / HTTPS),可直接作为系统代理 (同时支持 PAC)安装部署如果自己有云服务器可以在服务器上部署。如果你只是在PC上听歌!!Linux依次执行命令即可!curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash nvm install 10.16.0 git clone https://github.com/nondanee/UnblockNeteaseMusic.git cd UnblockNeteaseMusic npm install pm2 -g npm install pm2 start app.jsWindows1)下载安装nodejs (官方地址:https://nodejs.org/en/)2)安装完成后检查是否成功。Win + R 然后输入 cmd 点击【确定】然后输入 node -v 会显示nodejs版本号,有显示就说明成功了!3)下载项目源码到本地!可以用git(需要安装git) 也可以直接下载zip包!下载地址:https://github.com/nondanee/UnblockNeteaseMusic/archive/master.zip将压缩包解压到任何一个目录,比如 D:/aaa4)再次启动cmd, 注意这次一定要用管理员模式启动,因为还安装依赖包!5)启动后,依次输入。下面的命令来安装依赖包并启动服务!D: cd aaa npm install node app.js -p 180805)弹出提示 HTTP Server running @ http://0.0.0.0:18080 就是启动成功了!!6)这样那个CMD窗口不能关闭否则就不行了!可以利用一些服务还让他后台运行!npm install -g forever forever start app.js -p 18080软件设置1)下载安装网易云音乐客户端~2)右上角【⚙】 - 【工具】 - 【Http代理】 - 点击【自定义代理】 - 下拉框选择【HTTP代理】分别输入 服务器 和 端口 点击怕【确定】即可,会提示要重启客户端,重启即可!3)使用后结果对比!
2019年06月13日
86 阅读
0 评论
0 点赞
2019-05-09
EditPlus5.0注册码免费生成,附开源代码
全篇转载自 @如有乐享 ,由 小萌 进行编辑,本文仅作存档使用18年的时候EditPlus更新了5.0大版升级!更新的内容比较多!目前网上已经有生成注册码的开源代码了。有兴趣的可以去研究一下!关于EditPlus5.0新增那些功能??- Ctrl + Alt +向上/向下键可为多个输入点选择列。- Alt +鼠标单击可生成多个输入点。连续的“选择单词”命令会在选择中添加下一个匹配项。允许在自动换行模式下选择列。改进从右到左的语言支持。提高支撑高光的速度。允许在cliptext中使用多个热点。在文件中查找会在会话之间保留“区分大小写”和“仅限全字”选项。“删除空白行”命令包含仅包含制表符和空格的行。- 更新HTML 5元素的HTML工具栏。功能列表支持“保留过滤器文本”菜单选项。在文件中查找的Ctrl + Shift + F快捷键。- Record Keystrokes命令现在支持录制文件打开命令。将文件上传到ftp服务器失败时,它现在会显示一个重试消息框。在多个输入点上粘贴文本现在可以保留当前的多个输入点。Ctrl + Alt +向左/向右键用于扩展列选择。窗口列表上的“水平/垂直平铺”按钮现在会自动关闭对话框。生成注册码下面是2个注册码,第一个是网传的,第二个是博主生成的!NAME: VovanCODE: 3AG46-JJ48E-CEACC-8E6EW-ECUAWNAME: RUYO.netCODE: LASAE-E1FEY-XEKB5-2LOV2-OWWSI5.0版本发布不久,网友们就发现之前3. 和4.的注册码无法直接在5.0上使用了!不过没多久就有大佬通过逆向流程算法推断出5.0注册码的生成算法,并且已经开源~开源地址:https://github.com/Monkey1350/KeyGen-editplus其他提醒EditPlus5.0 加入了在线验证注册码机制。生成的注册码在线验证肯定就提示注册失败了。这个时候可以再次使用注册码注册即可!或者将在hosts加入下面一行,来屏蔽在线验证!127.0.0.1 www.editplus.com参考:https://bbs.pediy.com/thread-247874.htm
2019年05月09日
12 阅读
0 评论
0 点赞
2018-06-05
Windows激活之路:通过HWIDGen申请永久数字许可证
HWIDGen是一款由国外Nsane论坛会员s1ave77制作的Windows 10数字权利激活工具,这款Win10数字权利获取工具,可以自动获取Windows 10 数字许可证激活,无需产品密钥,以最简单的方式永久激活。原帖地址:http://www.nsaneforums.com/topic/312871-windows-10-digital-license-hwid-generation-without-kms-or-predecessor-installupgrade/数字权利激活什么是“数字权利激活”?数字许可证激活是 Windows 10 中新加入的激活方式,是一种授权方法的分类。数字许可证会记录您的硬件设备信息,只要在CPU和主板设备没有更换的情况下就可以连接微软服务器自动永久性的激活系统,重新安装系统时无需再次输入产品密钥,安装后会自动永久激活。“数字权利激活”在不更换电脑硬件的情况下一直有效,无论您安装的系统是正式版还是预览版,不影响永久激活效果。支持的系统目前基本上支持大部分Win 10系统!Windows 10 CloudWindows 10 Cloud(N)Windows 10 Core(N)Windows 10 CoreCountrySpecificWindows 10 oreSingleLanguageWindows 10 CoreWindows 10 EducationWindows 10 Education(N)Windows 10 EnterpriseWindows 10 Enterprise(S)Windows 10 EnterpriseS(N)Windows 10 ProfessionalWindows 10 Professional(N)Windows 10 ProfessionalEducationWindows 10 ProfessionalEducation(N)Windows 10 ProfessionalWorkstationWindows 10 ProfessionalWorkstation(N)Windows 10 LTSB 2015Windows 10 LTSB 2016手动激活操作比较复杂!不建议小白入手!1、Get GatherOsState.exe from Windows 10 17134 ISO2、Get latest version of slshim from https://github.com/vyvojar/slshim/releases3、Extract slshim32.dll (for gatherosstate from x86 ISO) or slshim64.dll (for gatherosstate from x64 ISO)4、Place gatherosstate and extracted slshim dll in the same directory5、Rename slshim dll to slc.dll6、Import this to registry:6.1、Set the real value for %sku% from beneath list.edition=Cloud sku=178 edition=CloudN sku=179 edition=Core sku=101 edition=CoreCountrySpecific sku=99 edition=CoreN sku=98 edition=CoreSingleLanguage sku=100 edition=Education sku=121 edition=EducationN sku=122 edition=Enterprise sku=4 edition=EnterpriseN sku=27 edition=EnterpriseS sku=125 edition=EnterpriseSN sku=126 edition=Professional sku=48 edition=ProfessionalEducation sku=164 edition=ProfessionalEducationN sku=165 edition=ProfessionalN sku=49 edition=ProfessionalWorkstation sku=161 edition=ProfessionalWorkstationN sku=162Replace the ‘XXX’ with the needed sku value. If using REG make sure the string is 7 digits long, the CMD will take the value from above.CMD:reg add "HKLM\SYSTEM\Tokens" /v "Channel" /t REG_SZ /d "Retail" /f reg add "HKLM\SYSTEM\Tokens\Kernel" /v "Kernel-ProductInfo" /t REG_DWORD /d XXX /f reg add "HKLM\SYSTEM\Tokens\Kernel" /v "Security-SPP-GenuineLocalStatus" /t REG_DWORD /d 1 /f reg add "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\gatherosstate.exe" /d Make shure the XXX are peplaced by shown ID from above SKUID list.Adapt the above path to gatherosstate.exe to the actual path.7、Enter default Retail/OEM key from products iniKey list from 17134.1 products.ini:Site: https://pastebin.comShareCode: /rYakstDcif you have Enterprise N or LTSB 2016 N use this in elevated Powershell:::EnterpriseN ((Get-Content '.\gatherosstate.exe') -replace "`0" | Select-String -Pattern "(.....-){4}C372T" -AllMatches).Matches | Select-Object -ExpandProperty Value ::EnterpriseSN ((Get-Content '.\gatherosstate.exe') -replace "`0" | Select-String -Pattern "(.....-){4}VMJWR" -AllMatches).Matchethis will gather the key from within gatherosstate.exe8、Run gatherosstate. After a few seconds you should get GenuineTicket.xml9、(optional) Remove HKEY_LOCAL_MACHINE\SYSTEM\Tokens from registry.CMD:reg delete "HKLM\SYSTEM\Tokens" /f reg delete "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\gatherosstate.exe"10、Place the created genuineticket at the root of c:\ and in admin CMD:clipup -v -o -altto c:\11、then force activation with:cscript /nologo %windir%\system32\slmgr.vbs -ato自动激活该版本是作者s1ave77提供的!全E英文操作!大家可以尝试其他几种!软件下载:链接: https://pan.baidu.com/s/1TT_seyt-faLyImdcPZ3AHw 密码: w96g解压密码:3Fs44Rv#tZ4u3UOij656NgF____批处理激活版这个也不错,可以直接看源码,放心安逸~~软件下载地址:链接: https://pan.baidu.com/s/1ZoeMrcypco7n-4EJFkudoQ 密码: 8jf1萌咖大佬优化:链接: https://pan.baidu.com/s/1ML5_tgI7OQrWLRny98BZ9A 密码: xfdnC#激活版本比较推荐这个版本也不错!比较直观!软件下载地址:链接: https://pan.baidu.com/s/1qlx03xURI5yGyLT7sQ_RSQ 密码: thcvC#代码编写~ 可以利用反编译工具看代码内容。推荐大家试一试这个!!该版本来自:https://www.52pojie.cn/thread-742884-1-1.html特别提醒激活过程中,保持电脑联网,且开启Windows Update!避免使用V_P_N!有些杀毒软件会提示软件有病毒。大家可以参考下:http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1786693
2018年06月05日
204 阅读
0 评论
0 点赞
1
...
4
5