分类目录归档:经验

优化中文网页排版样式

互联网的概念的是西洋人提出的,网页与网页浏览器也都发源于西方,因而在默认样式下,网页浏览器对中文网页排版总有些捉急——举个简单的例子,如果网页中的中文字符和英文字符相邻,那么排版出来的效果是「挤在一起的」,字符与字符之间没有间隙,过渡难称平滑。此外,还有如「标点挤压」「行尾点号悬挂」「章节边界调整」等问题,都是压在中文网页排版样式上的大山。

继续阅读

ThinkPHP 5.1 笔记(一)

最近在做一个需要大力出奇迹、快速开发的东西,听说 ThinkPHP 十分易于上手,就决定试一试用 ThinkPHP5.1 稳定版做程序的后端。因为过去基本没有用过 PHP 语言和 ThinkPHP 框架,所以基本是一边看手册一般写代码的。使用体验很好,ThinkPHP 不愧是风靡无数培训班的 PHP 框架,上手和使用都可以说是零门槛。

以下是我写代码时记录下的一些笔记。

继续阅读

[译] 如何检测 Chrome Headless(无头浏览器)?

原文链接:https://antoinevastel.com/bot%20detection/2017/08/05/detect-chrome-headless.html

原文标题:Detecting Chrome Headless

原文作者:Antoine Vastel

译者注:自从 Chrome Headless 发布后,各种基于 Chrome Headless 的自动化测试工具、爬虫等项目层出不穷。比起已经停止更新且容易被针对的 PhantomJS、Selenium 等经典自动化测试程序,Chrome Headless 几乎是完美的。然而,比起 Chrome 的普通模式,Chrome Headless 仍然有一些细微的差别,使其会被抓住小辫子……

编者注:我创建了一个库,可以使用浏览器指纹来检测识别机器人与爬虫。虽然这个库仍在开发中,但您已经可以开始使用它了。Github 地址为:https://github.com/antoinevastel/fpscanner

什么是无头浏览器(headless browser)?

无头浏览器就是一种没有图形用户界面的浏览器。它可以被程序控制,从而自动执行某些任务,例如进行网页自动化测试或网页截图。

为什么要检测无头浏览器?

除了上文提到的那两个人畜无害的例子,无头浏览器还可用于自动执行一些恶意的任务。例如,无头浏览器经常被用于网页爬取,增加广告展示次数或寻找网站漏洞中。

到目前为止,最受欢迎的无头浏览器之一是 PhantomJS。不过,因为它是基于 Qt 框架构建的,所以与大多数流行的浏览器相比,它在许多地方都有所不同。正如这篇文章所述,我们可以使用一些基于浏览器指纹的识别技术来检测它。

在 Chrome 59 之后,Google 发布了 Chrome 浏览器的 Headless 版本。与 PhantomJS 不同,它基于普通的 Chrome 而不是外部框架,这使得它更难被检测出来。

接下来,我们将介绍几种可用于区分普通 Chrome 浏览器和 Chrome Headless 的技术。

继续阅读