“2022年6月”存档文章有14

Exception: Install 'email_validator' for email validation support.

今天在使用 Flask-WTF 的时候,验证电子邮件地址,出现了如下错误:Exception: Install 'email_validator' for email validation support.出现错误的原因:从 WTForms 2.3.0 版本 email-validator 开始,电子邮件验证由名为( PR #429 )的外部库处理。解决方案:直接通过 pip 安装相关库,具体代码...

Nginx 启用文本压缩

今天在使用 PageSpeed Insights 检测网页的时候提示:启用文本压缩,如下图所示:但是经过手动检测这些 js 文件和 css 文件,已经启用了压缩,截图如下:通过上图可以看到已经启用了压缩,但是 PageSpeed Insights 仍然提示需要启用文本压缩。于是我登陆服务器,查看 Nginx gzip 的配置,是这样的:## # Gzip Settings ## gzip...

如何屏蔽 YandexBot

我们经常会受到大量的 YandexBot 访问,我们知道 YandexBot 是 Yandex 的搜索引擎的爬虫。大量的 YandexBot 访问,不仅给服务器造成了非常大的压力,同时也会使正常访客访问网站变慢,影响体验。基于以上原因,我们不得不限制 YandexBot 的访问,但是需要注意的一点:限制 Yandex 访问会损失 Yandex 带给我们的流量,由于限制了 Yandex 的爬虫索引我...

如何识别假爬虫

我们在检查网站日志的时候,经常会遇到各种各样的爬虫。有的是正常的爬虫,例如:搜索引擎爬虫(百度搜索引擎爬虫、Google 搜索引擎爬虫,Bing 搜索引擎爬虫、YandexBot 等),还有一些各种功能的爬虫,可以在这里查看:list crawlers。但是,互联网上并不是所有的爬虫都是有益的,有些爬虫为了极力隐藏自己,于是就会学习真实爬虫的一些特征。还有一些是假爬虫,也就是伪造那些搜索引擎的爬虫...

SQLAlchemy or 查询

最近在使用 SQLAlchemy 的时候需要对多个字段进行查询,需要使用到 or 查询,在 SQLAlchemy or 查询示例如下:like_param = f'%{get_company_name}%' query_like_companies = IPCrawlerCompany.query.filter( or_(IPCrawlerCompany.name.like(like_...

异步加载 CSS 的最简单方法

为了提高页面性能和弹性,我们可以做的最有影响力的事情之一:是以不延迟页面呈现的方式加载 CSS。这是因为默认情况下,浏览器会同步加载外部CSS——在下载和解析 CSS 时停止所有页面渲染——这两者都会导致潜在的延迟。当然,在允许页面开始渲染之前,至少应该加载网站的一部分 CSS,并且要立即将初始 CSS 获取到浏览器,我们建议内联(或 HTTP2 服务器推送)CSS。对于整体数量较少的网站,仅此一...