显示标签为“谷歌”的博文。显示所有博文
显示标签为“谷歌”的博文。显示所有博文

2023年10月15日星期日

油管开始禁用 adblock插件了

     这个消息早就在网上有看到一些消息了,说油管已经在灰度禁用广告插件了。传言应该是还在灰度中,没想到打开油管看到禁用的提示了,也不知道是我命中实验了还是已经全量了。

    

         提示的内容如上:YouTube 不允许使用广告拦截器。和 b站知乎等大部分拦截软件不同,油管的禁用是直接一个大弹窗居中放在中间的,其他都是在网站上方一行小字提示。

       这个提示还是只是弹窗提示,非强制的,点掉依然可以继续正常观看视频。但是下次重新打开油管看视频还是会重复提示。这个感觉是一个信号,以往谷歌对于这些都挺放宽的,现在感觉可能是由于经济下行,谷歌营收增长有压力了,要开始考虑挖掘一些商业化营收。下一步很可能是谷歌的搜索引擎也会有相关的禁用计划,毕竟谷歌的广告营收两个大头就是搜索和油管。

2023年9月24日星期日

谷歌 pixel5体验

    前段时间从咸鱼购入了一台 pixel5的机子,体验了有一段时间了。今天记录一下一些体验,纯粹主观感受,不做评测建议。

购买经历

    机子是从咸鱼买的,当时用咸鱼搜索的时候其中大部分的价格都在 800 多,而且还有没解锁成色差等各种问题的,本着体验的想法,想着找一个能用的尽量便宜的就行。后面找了一个 500 多到手的,差不多是最便宜的了。


    除了屏幕有个黑点,


其他各方面都是没什么问题的。不过从发货备注的标签,和发货物流也是深圳看,应该是专门回收转手卖的。不过无所谓了,不纠结这个。

手机整体感觉

    手机是黑色的,6.3 英寸屏幕,重量非常轻巧,磨砂的金属材质质感,握在手上的第一感觉非常不错。但映入眼帘的右下角屏幕黑掉的圈圈也是格外显眼😂,anyway,不到 600 块的价格还要什么自行车。



一些印象深刻的点

    上手后体验了几天,没有重度使用,也没有特别细致去研究这手机的优缺点。但是仅从短短几天的体验下来,对比我之前使用 iPhone 和小米的手机,就感受到一些明显不同的点。

手感很好

    手感这个是真的不错,屏幕尺寸比较小是一方面,更重要的是边框是圆弧处理而非 iPhone 的那种棱角伶俐的硌手感。加上后盖是磨砂的金属材质,手感兼职完美。对于我这种手小的人使用真的非常舒服,虽然卖家随盒配了一张清水壳。但因为手感太好我直接把赠送的手机壳给扔了。
单手握持

后盖磨砂金属

续航比预想中好

    机身和电池都不是很大,原以为续航会尿崩。但是实际情况有点出乎我意料,可能是没有国内那么多流氓 app的原因


信号差

    这个也是没想到的,一般信号差是iphone的专属。没想到 Google 也不太行,都是用的高通方案,干不过国内手机厂商。说明国内的手机厂商是有两把刷子的。嗯,充分说明在一个充分竞争的市场,能活下来的都不是善茬。


流畅度惊人

    这个在体验之前是有预期的,毕竟很早就听闻谷歌对于安卓亲儿子优化是不遗余力的,加上应用商店审核严格,第三方 app质量也是非常高,同时也没加太多花里胡哨的功能(或者广告推送服务)。流畅度高是有预期的,但是有点超预期了。在这颗中低端的 u有这般的流畅体验确实有点意外,放个小录屏简单感受一下。动画可能是一方面,更重要的是点击到相应的及时程度。


谷歌GMS无感体验

    对于重度使用 GMS的人,pixel系列手机就很爽了。系统登录一个谷歌账号,其他的全部谷歌服务都无需重新登录和验证。各种同步体验做的很无感,很到位。有种都意识不到这需要重新登录一个账号的感觉,也不需要重新打开某个网站用谷歌服务,完美诠释啥叫谷歌全家桶的体验。

感觉体验不是很适应的点

抽屉模式

    在很早学生时代用诺基亚塞班系统,以及大学的时候刷机安卓的时候,就已经体会过来安卓原生的这种二级抽屉UI。老实说到现在还是不太能适应,不是很习惯这种设计,现在 iphone和众多安卓手机厂商都是一级的应用菜单了。

负一屏

    负一屏这个 Google 看起来也是有自己想法,负一屏这里默认放的信息流推送。这个和其他安卓、iPhone 都不一样,其他手机厂商的思路都是在负一屏放快捷入口,或者工具属性的状态展示。

输入法

    输入法这个国外大厂就没有一个做的比较智能的,包括谷歌微软和苹果。可能是因为隐私的原因,所有都是本地处理。但好歹加个本地词库优化吧,这感觉三家对于中文输入都不够重视。

总结

    这次购买和体验 pixel5纯属玩票性质,以上的体验也非常主观。内容也是只谈及了自己感受比较深的一些点,很多内容都不涉及到。比如网上很多人吹的 Google 相机单摄打双摄的算法能力等,机子还会留着继续用,没准后续还要用来开发和调试,有更多体验了到时候在分享一下吧。

谷歌 blogger 设置移动主题

     基于 blogger 搭完新博客没多久就把谷歌站长 console添加上了,没过几天谷歌也有了收录,但是也报告了提示站点在博客端有问题。进入后台开了以下,一共有 3 个问题,有

  1. 文字太小,无法阅读
  2. 可点击元素之间距离太近
  3. 视口未设置为设备屏幕宽度

    于是我用手机访问了一下,发现整个页面实际上就是把电脑版本的搬了过来,在手机设备阅读体验确实很差。
    然后就开始琢磨着这么改善这个问题,研究了一下发现主题里面是有移动端适配的,但是默认没有启用。首先找到主题,自定义设置,往下拉在修改 HTML 下面有个移动设置,点击
    弹出界面可以选择移动端还是桌面端,这里选择启用移动端,并且和桌面端一样支持羊是选择(但是款式没有桌面端丰富),我起初为了保持和桌面也一样也选了 simple
     但是切换完后,到手机预览感觉有点太黄了,和桌面完全不是一个调调,于是就切回默认主题

    移动端切回默认主题虽然看起来不是很好看,但是也还算比较正常,就它了

    最后到谷歌站长后台,原问题那点击重新验证,等待谷歌重新确认是否还存在以下问题即可

blogger镜像站优化方案

     在架设镜像站后,算是基本解决了大陆地区访问的问题。上一篇【blogger 添加百度站长】后也解决大陆地区搜索引擎收录的问题,但整体还是存在一些问题的,不够完备。比如目前还存在以下问题

  1. 镜像站的 sitemap内容是错误的,存放的不是镜像的域名地址

  2. 镜像后的站内地址无法自动替换为镜像的域名(估计是 blogger 固定地址的原因,同样镜像 hugo的pages站点就没这个问题)

优化方案

    对于第一个问题,解决办法上篇文章就提到了,就是手动提交。对于个人日常博客,手动提交的工作量其实也还好,对百度的要求就是能收录到就可以。(截止目前只有 Google 收录了,必应都还没收录)


    
    对于第二个问题,之前也尝试了 nginx反向代理的内容替换,但是看起来也不起作用。不知道是否是配置有问题,暂时一个比较麻烦的想法就是做一个独立页面,收录归档镜像站的网址。如此一来有一个页面可以收录全部的镜像地址,方便被墙的朋友可以访问到。


blogger 添加百度站长

     由于墙的存在,默认情况下 blogger 的站点百度是不会收录的。但自定义域名加上 cloudflare代理后估计百度是能收录的,但是等默认收入估计得等到猴年马月去了。最近给blogger 加了一个面向大陆地区的镜像站https://cn.mangodaily.xyz,所以想着把镜像站添加到百度站长后台去。设想理想状态是百度收录镜像站,国内用百度搜索搜索到镜像站链接,国外则是谷歌,如此一来哪里访问都不耽误。


添加步骤

  1. 注册百度站长,登录后台,点击添加网站,填写域名信息

  2. 填写站点属性,最多勾选3 个

  3. 验证网站所有权,由于无法完全拥有 blogger 服务器根目录操作权限,这里选择 html验证方式

  4. 复制提示中代码,到 blogger 后台,主题,自定义修改 html,开头找到有 metal相关的内容,添加之相同位置

  5. 返回百度验证,发现验证失败,于是去访问首页,用开发者模式检查是否已经添加成功,发现已经添加成功了。返回等一会重新验证了几次,还是没成功。

  6. 最后求助谷歌,搜到一篇博文,采用的是添加自定义 css的方法,基于此方法最后终于成功了。



如何使用

    添加完成后一般是把 sitemap给填上,让搜索引擎基于 sitemap自动提取和收录站点的链接。但目前搭建的镜像站点是有问题的,打开 sitemap链接发现,里面的链接内容没有自动替换域为域名的镜像站,所以暂时就不提交错误的 sitemap了,直接的办法就是每新增一篇文章就手动在百度站长后台的手动提交功能提交上去,对于原创个人博客,更新频率有限,也不算太麻烦吧。


2023年9月22日星期五

反向代理谷歌 blogger

     谷歌 blogger 优点很多,用了一段时间,感觉除了不支持 markdown,各方面体验都还挺好的。但对于中国大陆地区则有一个很大的缺点,就是相关域名都被墙了。大陆地区无法正常访问,即便本博客套了 cloudflare的一层 cdn,对于一些必要的css和 js等资源还是无法加载。之前一直在找办法能否让国内内地地区也可以访问,后面找到了用反向代理做一个镜像站。


反向代理步骤


    在反向代理设置之前,需要准备以下东西。

  • vps一个,我采用的是前几天用阿里云国际站买到的香港轻量服务器,国内访问速度良好且不用备案
  • 域名一个,在搭建 blogger之前就有了,就用本站的主域名新开一个二级域名即可

1. vps安装mw面板管理,以及安装好网站基础运行环境

mw面板(老子面板)是一款仿宝塔面板的开源面板,开源地址为https://github.com/midoks/mdserver-web整体使用和宝塔没有太大区别,宝塔功能会多一点,但是商业化味道也更重一点。需要绑定手机号啥的,因此发现这个开源的替代品就索性用开源的算了。依照指引用脚本一件安装即可,和宝塔没有太大区别,安装成功后默认一件安装常用的网站所需资源。

可以发现 mw面板吧宝塔默认的 nginx替换为openresty,但了解了一下 openresty兼容 nginx,不用担心平时兼容性问题。

2. 新增站点

      与宝塔一致,填写域名。做面向国内访问的镜像站,域名我直接起个 cn.mangodaily.xyz


3. 申请 ssl证书

      这里操作和宝塔也没什么区别,支持一件申请免费的 ssl证书,验证方式有文件和 dns两种。优先选择文件验证,如果不行再考虑用 dns验证的方式

4. 设置反向代理

    反向代理原本我以为和宝塔差不多,但一设置发现还是有点区别。功能比宝塔少了一个内容替换。但设置起来反而更简单吧,加上域名就可以了

5. 设置反向代理支持 ssl

    完成后是了一下,发现报502 错误了


网上搜索了一圈,发现默认反向代理设置没有开获取上游网站的 ssl证书支持,到 nginx的 http参数把以下设置开关打开就好了


最好,体验一下香港 vps的延迟,一眼过去全绿,舒服

2023年9月16日星期六

记一次白嫖 cloudflare翻车

    事情大概是这样子的,很早就知道 cloudflare是个好东西,很多功能对于免费用户都是直接开放的,比如 ssl证书和cdn,以及我的技术博客用的page功能也是免费的。最近了解到 work功能可以用来做反向代理的,和我想的一样这功能肯定有人用来反代谷歌。所以也尝试了一下,没想到翻车了。记录一下配置过程吧

    在开始之前首先需要准备

  • cloudflare账号一个
  • 域名一个
1. 创建一个 worker
2. 自定义一下名字,简单点取个 Google 就可以

 3. 输入反向代理js代码,点击保存
// 反代目标网站.
const upstream = 'www.google.com'
 
// 反代目标网站的移动版.
const upstream_mobile = 'www.google.com'
 
// 访问区域黑名单(按需设置).
const blocked_region = ['TK']
 
// IP地址黑名单(按需设置).
const blocked_ip_address = ['0.0.0.0', '127.0.0.1']
 
// 路径替换.
const replace_dict = {
'$upstream': '$custom_domain',
'//archiveofourown.org': ''
}
 
addEventListener('fetch', event => {
event.respondWith(fetchAndApply(event.request));
})
 
async function fetchAndApply(request) {
 
const region = request.headers.get('cf-ipcountry').toUpperCase();
const ip_address = request.headers.get('cf-connecting-ip');
const user_agent = request.headers.get('user-agent');
 
let response = null;
let url = new URL(request.url);
let url_host = url.host;
 
if (url.protocol == 'http:') {
    url.protocol = 'https:'
    response = Response.redirect(url.href);
    return response;
}
 
if (await device_status(user_agent)) {
    var upstream_domain = upstream;
} else {
    var upstream_domain = upstream_mobile;
}
 
url.host = upstream_domain;
 
if (blocked_region.includes(region)) {
    response = new Response('Access denied: WorkersProxy is not available in your region yet.', {
        status: 403
    });
} else if(blocked_ip_address.includes(ip_address)){
    response = new Response('Access denied: Your IP address is blocked by WorkersProxy.', {
        status: 403
    });
} else{
    let method = request.method;
    let request_headers = request.headers;
    let new_request_headers = new Headers(request_headers);
 
    new_request_headers.set('Host', upstream_domain);
    new_request_headers.set('Referer', url.href);
 
    let original_response = await fetch(url.href, {
        method: method,
        headers: new_request_headers
    })
 
    let original_response_clone = original_response.clone();
    let original_text = null;
    let response_headers = original_response.headers;
    let new_response_headers = new Headers(response_headers);
    let status = original_response.status;
 
    new_response_headers.set('cache-control' ,'public, max-age=14400')
    new_response_headers.set('access-control-allow-origin', '*');
    new_response_headers.set('access-control-allow-credentials', true);
    new_response_headers.delete('content-security-policy');
    new_response_headers.delete('content-security-policy-report-only');
    new_response_headers.delete('clear-site-data');
 
    const content_type = new_response_headers.get('content-type');
    if (content_type.includes('text/html') && content_type.includes('UTF-8')) {
        original_text = await replace_response_text(original_response_clone, upstream_domain, url_host);
    } else {
        original_text = original_response_clone.body
    }
 
    response = new Response(original_text, {
        status,
        headers: new_response_headers
    })
}
return response;
}
 
async function replace_response_text(response, upstream_domain, host_name) {
let text = await response.text()
 
var i, j;
for (i in replace_dict) {
    j = replace_dict[i]
    if (i == '$upstream') {
        i = upstream_domain
    } else if (i == '$custom_domain') {
        i = host_name
    }
    
    if (j == '$upstream') {
        j = upstream_domain
    } else if (j == '$custom_domain') {
        j = host_name
    }
 
    let re = new RegExp(i, 'g')
    text = text.replace(re, j);
}
return text;
}
 
 
async function device_status (user_agent_info) {
var agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
var flag = true;
for (var v = 0; v < agents.length; v++) {
    if (user_agent_info.indexOf(agents[v]) > 0) {
        flag = false;
        break;
    }
}
return flag;
}
 4. 最后体验发现,翻车了,提示以下错误
    网上搜索和研究了一下,发现这个是由于谷歌的对于反向代理的一个封禁措施,和 ip有关系这个基本上说明基于 cf的反代谷歌的白嫖这条路子断了,白嫖失败。

2023年9月9日星期六

搜索引擎的高级用法

 搜索引擎是我们日常生活中常用的工具之一,但很多人只是使用基本的搜索功能。以下是一些搜索引擎的高级用法,可以帮助你更精确地找到所需的信息:


1. 使用引号

在搜索词或短语周围加上引号,可以强制搜索引擎只返回包含完全相同短语的结果。例如,搜索 "折叠屏手机" 将只返回包含这个短语的结果,而不是包含 "折叠屏" 和 "手机" 的独立结果。

试了一下,可能现在搜索引擎太智能了,谷歌在比较短的短语搜索。加引号与否结果没发现什么差异

search-result



百度则是内容差异大一点,但是也判断不出哪个更准确一点

search-result


2. 排除词语

如果你想排除某个词语,可以在搜索词前加上减号(-)。例如,搜索 "苹果 -水果" 将返回关于苹果公司而不是水果的结果。

排除这关似乎百度表现更好,苹果不管是否加减号,返回的都是苹果公司相关的内容,完全没有水果中的内容。

百度则区分了这个减号的作用


3. 使用星号通配符

在搜索词中使用星号(*)作为通配符,可以帮助你找到与特定词根相关的多种单词形式。例如,搜索 "计算机*" 将返回与计算机相关的词汇,如计算机科学、计算机工程等。

通配符表现百度和谷歌表现都差不多,有通配符的时候搜索结果则更广泛一点



4. 站点限定搜索

如果你只想在特定网站上搜索信息,可以使用 "site:" 后跟网站域名。例如,搜索 "人工智能 site:wikipedia.org" 将只返回维基百科上与人工智能相关的页面。




5. 文件类型限定搜索

如果你只想搜索特定类型的文件(如PDF、PPT等),可以使用 "filetype:" 后跟文件扩展名。例如,搜索 "人工智能 filetype:pdf" 将返回PDF格式的人工智能文档。




6. 相关词汇搜索

使用 "~" 符号可以找到与搜索词相关的同义词或相关词汇。例如,搜索 "~健康" 可能返回与健康相关的词汇,如健康、医疗、保健等。


7. 时间范围限定搜索

如果你只对特定时间段内的信息感兴趣,可以使用搜索引擎提供的时间过滤器或在搜索词后加上时间范围。例如,搜索 "太空探索 2020..2022" 将只返回在这个时间范围内发布的结果。



或者在搜索之后,可以通过筛选时间段


8. 计算器和单位转换

搜索引擎可以用作计算器,你可以在搜索框中输入数学表达式,例如 "2+2",或者进行单位转换,例如 "100英尺转为米"。


9. 语言翻译

搜索引擎通常可以用作翻译工具。输入 "翻译" 或 "translate",然后跟上要翻译的词语或句子,即可获得翻译结果。




10. 图像搜索

主流搜索引擎允许你上传图片以进行图像搜索,以查找类似或相关的图片和信息。可以用关键字 image或者直接切搜索结果的工具栏


11. 音频和视频搜索

你可以使用搜索引擎来查找特定音频或视频文件,只需在搜索中包括相关的关键词和文件类型。


12. 高级搜索引擎

除了传统搜索引擎,还有专门用于学术研究的搜索引擎(如Google Scholar)、新闻搜索引擎(如Google News)等,它们提供了更多高级搜索选项和过滤器。

谷歌学术

百度学术

这些高级搜索技巧可以帮助你更快地找到特定的信息,并提高搜索效率。不同的搜索引擎可能支持不同的功能,因此你可以根据你使用的搜索引擎来选择适合的高级用法。

聊聊最近的手机圈子

      自从8月底华为的mate60系列手机发布后,沉寂很久的机圈又火了起来。很久没看到这么热闹了,先是华为未发先卖的mate60携着麒麟9000S芯片和5G的回归打响第一炮。紧接着是苹果一年一度的科技春晚发布iphone15系列。然后是小米带着澎湃OS的小米14系列杀出来,...