Logo

site icon猫东东

一直从事软件技术相关的工作,始于2004年甚至更早。 常驻西安。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

猫东东 RSS 预览

真正正确使用Cloudflare SaaS优选功能

2024-10-11 11:36:05

在数字世界的浩瀚海洋中,Cloudflare SaaS功能犹如一座光芒四射的灯塔,为众多网站管理员和开发者指引着网络性能优化的方向。它的强大功能,正日益成为这个技术驱动时代的宠儿。但是,当你在互联网的汪洋中寻找一盏明灯,希望找到一篇真正全面、深入且能解决实际问题的指南时,你会发现这并非易事。许多教程如同海面上的浮萍,表面光鲜,却缺乏深度,甚至彼此抄袭,让初学者望而却步,也让经验丰富的开发者难以获得更深层次的洞察。
今天,让我们摒弃那些陈词滥调,通过一个域名案例,带你深入探索Cloudflare SaaS功能的神秘殿堂。

准备工作

  • Cloudflare账号,申请地址: https://cloudflare.com
  • 2个域名
    • cfd.del.pub 最终要使用的域名(这个需要在能分线路的解析商,国内的可以选择dnspod, alidns, 西数dns, 华为云dns, 国外的话,可以用GCORE)
    • sa6.us.kg 可以托管在cf上的域名,有很多,比如us.kg, nyc.mn, cloudns.org皆可
  • 1个演示空间

建立主机

以serv00的免费空间为例,其它空间大差不差,有就行

PS. 我们这里把cfd.del.pub作为 xafyi61.serv00.net 的别名,为了之后比对加速效果

serv00

解析域名

  1. 在Cloudflare上添加域名 sa6.us.kg 并等待他生效

  1. 在sa6.us.kg上添加CNAME记录,指向你的serv00.net域名就可以,这里尽量不要用顶级去CNAME,可以随便用个2级来CNAME,现在就用serv00.sa6.us.kg来做CNAME,一定要把代理状态打开,否则这个域名无法做回源

如果用顶级,可以用A记录,指向服务器IP

添加一条CNAME解析

把这条二级域名添加到回源域名

  1. 在Cloudflare点击自己的域名,然后点击左侧的 SSL/TLS -> 自定义主机名,进入SAAS功能

这里需要认证一下,支持信用卡和paypal,如果都没有,可以用一些大佬分享的虚拟信用卡来验证,不扣钱,也不涉及后续支付,只是认证

开始界面

添加之后,会告诉你初始化中,等待一下,就会生效了

添加完成

其实现在访问一下 https://serv00.sa6.us.kg,你会发现,可以直达你的空间了

其实就cf给你的二级域名强行绑定了一个你指定的域名

可以访问了

添加自定义域名[重点]

这会就可以把你要的域名绑定到你的这个回源域名上了

  1. 点击添加自定义域名

添加自定义域名

  1. 填写域名相关信息。以我们演示绑定的域名 cfd.del.pub 为例,填写如下信息:

填写相关信息

  1. 添加完成,等待证书和解析

等待证书和解析

  1. [关键] 去del.pub的域名管理面板,添加解析记录,指向你的serv00.sa6.us.kg域名(我的域名在西数上,所以以西数为例)

PS. 因为西数没有单独的国内选项,所以我的解析是通用解析到visa.cn,国外指向serv00.sa6.us.kg,这里的解析,只要保证国外的解析到serv00.sa6.us.kg(回源域名),国内的到你要加速的就好

一般演示如下:
添加解析记录

这里推荐一个CF优选域名的地方: https://www.wetest.vip/,可以看到他提供3个域名来加速

*.cloudflare.182682.xyz    15分钟更新*.cloudfront.182682.xyz    15分钟更新*.gcore.182682.xyz         15分钟更新

我们选一个,将解析改为下面的

更新解析

  1. 最重要的,证书还没有验证,再添加一条

获取要解析的内容

就能看到要验证证书,就要添加如下的TXT解析

PS. 这一条有个坑,一定注意,有部分解析商,在加值的时候,要加上双引号,不然值为空,点名 x10hosting

记录名 类型
_acme-challenge.cfd.del.pub TXT lLB_4TOxh2UlJjekcll-ymXzal4YW0160UALqoqAgdM

添加证书验证

  1. 回到cf自定义域名这里,等待生效

生效了

  1. SSL证书自动续期,你细细观察一下,在自定义主机最下面,有一个”自定义主机的DCV委派”,这就是自动续期域名的,点击展开,就可以看到具体说明,就是加一条CNAME到他指定的值,就可以实现自动续期证书

当前给我们的是:

_acme-challenge.<hostname> CNAME <hostname>.8130884beea37816.dcv.cloudflare.com

其中指的是我们自定义的域名,如:cfd.del.pub,替换之后就成了

_acme-challenge.cfd.del.pub CNAME cfd.del.pub.8130884beea37816.dcv.cloudflare.com

所以我们去del.pub的域名管理,把刚才添加的TXT解析,_acme-challenge.cfd.del.pub改为上面的,就OK啦(直接改上面的TXT,因为CNAME会和TXT冲突,CNAME是一个万恶之源)

验证速度

可以直接访问:https://cfd.del.pub/ 来测试速度

也可以用工具来测(以boce.cn为例子):

  1. 优选前:

  2. 优选后:

  3. 同类的测速工具推荐:

名称 地址 描述
帝恩斯 https://www.boce.com/http 好像是dnspod的,每天有次数限制
itdog https://www.itdog.cn/http 这个用的多,没次数限制
炸了么 https://zhale.me 这个也很好

华为云域名修改NS遇到的问题

2024-10-06 01:37:26

在华为云以一元的优惠价格购买了一个域名后,

我满怀期待地想要将其解析服务迁移至DNSPOD,以期获得更美观的解析界面。

然而,这一过程却远非我想象中的那般简单。

修改NS记录的曲折之旅

我自信满满地登录华为云控制台,轻车熟路地进入云解析服务,

选择公网域名,管理解析,然后修改NS记录。一切看起来如此顺畅,

直到我下午返回,发现DNSPOD的解析服务依旧没有生效。

华为云解析界面

漫长的等待

华为云的官方测试工具显示,NS记录仍然是华为云的ns1.huaweicloud.comns1.huaweicloud.cn

我查阅了华为云的文档,被告知NS记录的修改需要长达48小时才能生效。

考虑到这仅是一元钱的首年投资,我决定耐心等待。

48小时后的困惑

然而,三天过去了,NS记录依旧没有更新。我使用了多种工具进行检测,

发现其他域名的NS记录已经更新,但DNSPOD却始终检测不到变化。

我尝试更换至其他解析服务,结果依旧不尽人意。

客服的协助

我开始怀疑是DNSPOD的问题,于是提交了客服工单。

客服迅速回应,但经过一番沟通,我意识到问题可能出在华为云这边。

华为云的工程师在仔细审核后,终于发现了问题所在——原来,

NS解析的修改并不在解析服务中进行,而是需要在域名信息中修改。

问题的解决

  • 首先,访问域名注册
  • 在域名列表中找到你的域名,点击进入。
  • 在域名信息中,找到DNS服务器一项,点击修改。
  • 将NS记录修改为你自己的,等待大约10分钟,解析服务便成功生效了。

域名信息修改

DNS服务器修改

反思与吐槽

华为云的域名管理流程确实让人有些摸不着头脑。既然NS解析的修改不在解析服务中进行,

为何还要在解析服务中提示可以修改呢?

这样的设计是否应该重新考虑,以避免给用户带来不必要的困扰?

这次的经历让我深刻体会到,即使是看似简单的任务,也可能隐藏着意想不到的挑战。

但通过不懈的努力和客服的协助,问题最终得到了解决。

希望华为云能够从用户的角度出发,优化其服务流程,让每一位用户都能享受到更加顺畅的服务体验。

浏览器指纹:数字世界中的个人印记

2024-10-01 13:43:26

想象一下,当你在浏览Facebook、Instagram或Amazon、Etsy等网站时,这些平台正默默地收集关于你浏览器的各种细节。这包括你的IP地址、操作系统(如Windows或macOS)、屏幕分辨率,甚至你安装的字体。这些看似微不足道的信息,一旦汇总,便构成了一个独特的浏览器指纹。这个指纹,就像你手上的纹路一样,是独一无二的,能够让网站识别出你,即便你清除了Cookies或使用隐私模式。

为何网站需要浏览器指纹?

浏览器指纹的重要性在于它赋予网站一种能力——记住你是谁。电商平台和社交网络都希望其用户是真实的个体,他们不希望看到一个人控制多个账户。然而,在商业实践中,一个团队或企业可能需要运营多个账户。在这种情况下,了解浏览器指纹变得至关重要。对于使用指纹浏览器的用户来说,掌握每个浏览器指纹意味着他们可以更合理地配置环境,确保每个账户都能安全地独立运行。

浏览器指纹的常见类型及其机制

一般是分为以下几个类型:

1. IP地址

每当你连接到互联网时,你的互联网服务提供商(ISP)会为你的设备分配一个IP地址。这就像现实生活中的邮寄地址,确保数据能够准确送达目的地。IP地址作为浏览器指纹的一部分,为用户的设备提供了一个全球唯一的标识符。网站可以利用这个信息来定位用户、定制内容,并进行安全检查,例如识别异常登录行为或防止欺诈。此外,IP地址还帮助网站执行合规性控制,比如某些网站可能会限制某些国家的IP访问。

2. 地理位置

IP地址不仅揭示了你的数字身份,还能透露你的地理坐标。通过它,网站能够识别你的国家、地区、城市,甚至精确到经纬度、邮政编码或社区。这些信息对于提供定制化的地理定位服务至关重要,比如根据你的地理位置展示本地化内容、设置语言偏好,以及推送区域性广告或促销活动。

3. 时区与当地时间

IP地址不仅揭示了你的地理位置,还间接提供了你所在的时区信息。此外,网站还可以通过执行JavaScript代码直接获取你的本地时间和时区。这种时间信息的获取对于提供个性化体验至关重要。

4. UA信息
User Agent(UA)是浏览器向网站发送的一个字符串,它包含了你使用的浏览器类型、版本以及操作系统等详细信息。这个信息对于网站来说极其宝贵,因为它允许网站根据用户的设备和浏览器提供兼容的内容和功能。

5. 浏览器语言
浏览器语言通常指的是用户在浏览器设置中选择的首选语言,这决定了用户在访问多语言网站时看到的默认语言版本。这些信息通常通过HTTP请求的“Accept-Language”头部发送给网站的服务器,可能包含一个或多个语言标签,通常按照用户偏好的顺序排列。

6. 字体

每台计算机上的字体库都是独一无二的,它们反映了用户的个人喜好、操作系统、安装的应用程序等多种因素。浏览器能够通过JavaScript API,例如FontFaceSet接口,列出用户设备上可用的字体列表。

7. 屏幕分辨率

屏幕分辨率不只是指显示器的物理像素数,还包括浏览器窗口的当前视图大小。例如,尽管一块显示器的分辨率可能为1920x1080,但浏览器的可视区域可能只占屏幕的一部分,因此其分辨率可能只有1920x1050。

8. WebGL与WebGPU

WebGL和WebGPU是两种图形相关的API,它们允许网页利用设备的图形处理单元(GPU)来渲染复杂的3D图形。正是这些API让我们能够在网页上体验到令人惊叹的3D游戏。

9. 媒体设备指纹

媒体设备指纹是网站通过MediaDevices API收集用户设备上的音频和视频硬件信息,包括设备类型、标签名称、分辨率(摄像头)、频率响应(麦克风)以及连接类型(如USB或蓝牙)。

10. AudioContext

AudioContext是浏览器提供的一个工具,用于处理和生成音频,使网站能够播放和修改声音。每个设备处理声音的细微差异可以通过这个工具被捕捉到,形成一种独特的“声音指纹”。这种指纹是独一无二的,因为它反映了每个人电脑上不同的音频硬件和软件设置。

11. ClientRects

在您浏览网页时,无论是阅读文章、在线购物还是观看视频,浏览器都会不断地计算和重新计算页面上各种元素的位置,以确保内容正确显示。这些计算结果可能因设备类型、浏览器、屏幕大小甚至当前窗口大小的不同而有所差异。这些看似普通的布局信息实际上可以被网站用来生成一个关于您浏览器的独特描述,即ClientRects指纹。

12. Speech Voices

Speech Voices指纹基于您设备上可用的语音合成选项。这些选项由操作系统和浏览器提供,可能包括不同的语言、口音和发音性别。由于每个人的电脑配置可能不同,这些语音选项也各不相同。网站可以通过Web Speech API获取这些信息,并将其用作一种识别手段。

13. 硬件并发数

硬件并发数指的是计算机的处理器核心数量,它是一个表示设备能够同时处理多少计算任务的指标。在浏览器中,这个信息可以通过JavaScript的navigator.hardwareConcurrency属性来获取。

14. 设备内存

网站可以检测到访问者设备的内存大小。这是通过JavaScript的navigator.deviceMemory API实现的,它可以返回设备的大致内存大小。为了减少指纹识别,保护内存非常低或非常高的设备的所有者的隐私,该API接口获取到的值最大只有8。

15. DNT

“Do Not Track”(DNT)是一种由用户设置的浏览器标志,用来告知网站用户不希望被跟踪。尽管DNT设置的初衷是为了增强用户的隐私保护,但它也可以被用作浏览器指纹的一部分。

16. Canvas指纹

Canvas是网页上一个可以让程序绘制图形的区域。网站可以通过在Canvas上绘制复杂的图形和文字,然后分析这些内容在您电脑上的具体显示方式,因为每台电脑显示这些图形和文字的细节都有微小的不同,如轮廓、阴影、颜色和像素排列方式的细微差异。这些微小的差异反映了您电脑上的一系列设置和硬件特性,形成了一种“数字指纹”。网站可以利用这个指纹来识别和追踪用户,即使用户更换了浏览器或删除了Cookies。

17. WebRTC指纹

WebRTC通过ICE架构来获取用户的真实IP地址,其中包括STUN和TURN服务器。STUN服务器帮助浏览器发现自己的公共IP地址,而TURN服务器则在STUN无法获取公共IP地址时使用,充当中继帮助浏览器之间建立连接

如何查看浏览器指纹呢

这里有一个网站可以看到 浏览器指纹:https://www.browserscan.net/zh

可以看到自己的指纹信息

如何改变浏览器指纹呢

用浏览器插件

User-Agent Switcher for Chrome (谷歌商店链接)

使用专门的指纹浏览器

这些浏览器其实是专门为跨境电商而设计的,它们会屏蔽一些常见的指纹信息,以保护用户隐私。

用Vercel+Supabase搭建Umami 遇到的坑

2024-09-25 10:45:56

昨天为了节约时间,用了Umami Cloud官方的免费版本做统计,正在美滋滋中,后来有水友留言说官方的一言不合就要停一下,官方的界面,其实还挺好

反正自己也想搭建,果断的自己搞一个出来吧,首先想到的是keyob.app,尽管他老是跳验证,验证还慢,但他支持docker直接部署,就再用用吧

直接建立一个,用上aiven.io的Mysql,因为keyob的免费机房只能选 华盛顿和法兰克福,所以aiven只能选弗吉尼亚节点

轻松成功,但是速度相当不令人如意…挺慢的,而且因为keyob.app的免费版限制,不能绑定域名,就不能白嫖CF大善人的加速了..

keyob+aiven

谷歌了下,果然有VERCEL上也可以部署,瞅了瞅vercel的节点,又看了看AIVEN的节点,想着umami还支持pasql,于是果断想起了另一个大善人supabase,节点多,速度快

老步骤:

  1. 创建一个supabase数据库,获取连接串 postgres://帐号:[password]@host:6543/postgres
  2. fockumami
  3. 在vercel新建项目,勾选fork的umami,然后在 Environment Variables 里添加一个KEY,名字为DATABASE_URL,值就是上面的串
  4. deploy
  5. enjoy

本想有教程在,不出意外就成功了,结果不出意外之外的就出意外了,报错..

prepared statement “s0” does not exist

错误信息

[23:18:04.355] ✗ Command failed: prisma migrate deploy[23:18:04.355] Error: Schema engine error:[23:18:04.355] db error: ERROR: prepared statement "s0" does not exist

官方git解决方案

马上去umami的git上查,结果还真和我一样的,在这里 issues#2426>>
最后得到的解决方法:
就是在
postgres://帐号:[password]@host:6543/postgres后面加 ?pgbouncer=true
再重启 supabase 就好了

还是有错

好家伙,果断加上,然后重新部署,想着又就好了,结果又出意外了,卡在了

[23:17:56.843] ✓ DATABASE_URL is defined.[23:17:58.048] ✓ Database connection successful.[23:18:00.166] ✓ Database version check successful.

一直卡住~~不动了…

继续查找

去搜,似乎所有的都指向上面这个,突然在一个回复看到 supabase取消了pgbouncer兼容性,于是去翻官方关于prisma的说明,正好,被我谷歌到了

原文在此:https://supabase.com/partners/integrations/prisma

官方专门说明了这个:

也就是说,要获取会话连接池字符串,应该用

postgres://[db-user].[project-ref]:[db-password]@aws-0-[aws-region].pooler.supabase.com:5432/[db-name]

而不是默认的事务池连接

postgres://[db-user].[project-ref]:[db-password]@aws-0-[aws-region].pooler.supabase.com:6543/[db-name]?pgbouncer=true&connection_limit=1

解决

把 DATABASE_URL 的值从

postgres://帐号:[password]@host:6543/postgres

改为

postgres://帐号:[password]@host:5432/postgres

一切正常….

Mongodb宣布弃用 Data API 和 Https Endpoints?

2024-09-24 17:00:56

MongoDB 的 Atlas Device Sync、Atlas Edge Server、Data API 和 HTTPS 端点已弃用。Data API 和 HTTPS 端点将于 2025 年 9 月 30 日达到生命周期结束并被删除,使用这些的用户应迁移到替代解决方案。替代方案包括 MongoDB 驱动程序和原生语言框架、MongoDB 驱动程序和 Cloud Native Functions、合作伙伴解决方案等,并介绍了各方案中的具体内容及注意事项。

官方给出的看似解决的解决方案

  1. MongoDB 驱动程序和原生语言框架自己搭建
  2. MongoDB 驱动程序和 Cloud Native Functions
  3. 合作伙伴解决方案

我自己

最近,我收到了MongoDB官方的一封邮件,通知我他们即将废弃Data API。今天再次查看时,果然在官方文档中看到了这一公告:Data API弃用通知

这让我感到有些意外,因为Data API一直是MongoDB的一大卖点,许多人选择它正是因为这个接口的便捷性,尤其是云函数部署的用户。

加上在我看来,官方3个方案其实并不能完全替代Data api,看似3个方案,其实上就是让用户自己建立中间件来链接mongodb而已,这看似替官方省下硬件成本,将成本转稼给用户端的作法,完全不是一个明智的选择。

MongoDB的开发者论坛上,我发现许多用户对这一决定感到困惑和担忧。很多人不理解为何要废弃这样一个受欢迎的功能,尤其是对于那些依赖Data API的中大型云项目来说,迁移成本相当高。一些用户甚至明确表示,他们可能会在明年减少对MongoDB的支持。

尽管如此,作为MongoDB的忠实用户,我仍然希望官方能够重新考虑这一决定。毕竟,在数据库技术如此多样化的今天,一旦用户选择离开,他们可能就不会再回来了。

我衷心希望MongoDB能够继续发展和进步。