本文中,苏南大叔讲述一下electron的几个邪门使用方式。为啥说是邪门方式呢?因为正常的程序不会这么干的。那就是:修改user-agent和referer,也就是伪装客户端信息,用于欺骗特定的远程服务器网页。当然,在具体操作的时候,都是很多种欺骗方式的组合,本文中描述的手段仅仅是初级入门级别的。

restHighLevelClient 修改部分字段_HTTP

本文测试环境:win10/[email protected]/electron-quick-start。

检测ua和referer

本文的配套龙套代码是基于php的,代码如下:

echo $_SERVER["HTTP_USER_AGENT"];

echo $_SERVER['HTTP_REFERER'];

同时,用js有可以检测ua和referer,代码如下:

alert(document.referrer);

alert(navigator.userAgent);

请注意js中的referrer比常见的referer多一个字母r。

为什么,苏南大叔在这里给出了两套检测方案呢?那是因为市面上有几个方案,其欺骗效果,是通不过js检测的,这个留作后话。

restHighLevelClient 修改部分字段_php_02

默认ua和referer

默认ua

对于本文的[email protected]来说,默认的ua是:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) electron-quick-start/1.0.0 Chrome/73.0.3683.121 Electron/5.0.6 Safari/537.36

可以看到,这个ua里面,居然有electron项目名称及版本号[email protected],而且有Electron的版本号[email protected]。这个ua,简直有泄密的嫌疑啊。

默认referer

默认的referer是空,所以,这里不做特殊说明了。

修改ua和referer

本文中的方案是利用loadUrl这个函数,来做修改的。所以,您的目标如果不能用loadUrl加载的话,就可能需要看其他的方案了。这里可能不是太适合您。

function createWindow () {
//...
mainWindow.loadURL('http://remote/check.php',{userAgent: 'Chrome',httpReferrer:"http://www.baidu.com/"});
//...
}

注意两个主要参数的单词拼写userAgent和httpReferrer,可能和传统认知是有区别的。

restHighLevelClient 修改部分字段_HTTP_03

下面的图,是本方案的测试结果:

restHighLevelClient 修改部分字段_php_04

特殊说明

所以,本文的方案的成功,需要重点说明的是:

还可以通过loadUrl定义更多的header,具体的可以参照官方文档。值得说明的是:只有userAgent和httpReferrer是被特殊提出来的参数,其他的header都被放在一个参数extraHeader里面了。可见,修改这两个参数的几率,是有多么的高。

总结

对于修改userAgent和referrer来说,本文仅仅是其中的一个简单方案。