免责声明:我不拥有此扩展程序的所有权,但这个程序对于那些想要快速轻松地访问被屏蔽文章的同学非常有帮助。如果每天都在使用某个网站的话,那么订阅它们将符合所有人的最大利益,以便它们继续开展业务。
创作纯兴趣爱好并非专业破解高手,如果有解释的不对的地方还请大佬指教。
这两天在medium上看到了一个老哥写的一个可以跳过网页付费墙的浏览器扩展程序安装教程,感觉很有意思便下载安装了,并且仔细研究了它跳过付费墙的原理。(文章链接已贴在教程结尾)
这个扩展程序的名字叫做HOVER,此教程会将安装步骤以及其实现原理进行详细讲解。
文章使用的文件已打包上传至百度网盘,需要的同学可以通过下面的链接下载:https://pan.baidu.com/s/1J3HXpX_O-NE5oPqUEEE47w?pwd=52pj
首先我们先进行安装这款扩展程序:
2.在导航栏内输入chrome://extensions至以下的页面,并且打开右上角的开发者模式,如下图:
我的浏览器已经装了一堆的扩展程序了,如果是新装的谷歌浏览器是没有这一堆东西的哈哈哈
3.把“dist”文件夹拖到扩展插件的界面
4.装完之后打开一篇原本需要订阅才可以看的华尔街日报的文章,发现已经可以查看了,安装教程到此结束!
细心的小伙伴可能已经发现在导航栏的右上角那里有一个有红色叉子的饼干🍪,这个是我们之后要讲的其中一个跳过付费墙的方法之一(禁用cookie)。
我们在下面这个部分会讨论这个扩展程序是怎么工作的,以及我们怎么使用类似的程序绕过基本所有的网站付费墙。
这个程序中主要包括3种绕过付费墙的方式,包括
并不是所有的网站都需要使用上述的3种方法,绕过付费墙的方法具体取决于网站,一般来说使用第一种或者第二种就可以绕过绝大多数网站的付费墙。
第1种方法:假装我们是点击三方社交软件进入的该网页
很多时候我们会在社交软件里面收到别的网站发来的链接,例如在微信里面收到小红书的内容,可以不用下载小红书的客户端就可以直接查看,虽然小红书免费,但是一般别的付费网站也是类似的套路。
为什么会这样呢?因为很多时候我们在别的社交媒体里面点击目标网站的文章时,这个网站想要让我们认真的阅读完整篇文章以获得良好的阅读体验,并且我们会有动机继续阅读该网站别的内容,这样会有助于该网站增加一个潜在的新用户。
我们需要怎么样才可以假装我们是从别的网站点击进来的呢?当我们访问一个网站时,这个信息是包括在一个HTTP Header(标头)里面的,当我们正在访问的网站查看到我们是从三方网站点击进来的时候就会自动停止使用付费墙来阻拦我们查看内容,在这个扩展程序里面是通过下面的代码实现的:
paywallEnabled = true;
//Redirect Referer
if (!(rootSearch in paywallSMWhitelistDict)) {
details.requestHeaders = details.requestHeaders.filter(function(header) {
if(header.name === "Referer") //删除原本HTTP header的一部分
return false
return true
})
details.requestHeaders.push({
"name": "Referer",
"value": "https://t.co/" //将其替换成推特的网站,假装我们是从推特点击进来的
})
console.log("Changed Header to Twitter")
}
这段代码在hover-paywalls-browser-extension/dist/bg_scripts/paywall_scripts/paywall_bypass.js的第30行。
第2种方法:将我们的设备伪装成谷歌广告机器人(Google adbot)
这种方法是将我们的设备给伪装成谷歌广告机器人(Google adbot),我们需要先讲解一下谷歌是怎么实现这种输入关键字弹出对应的内容的呢?谷歌是定期使用广告机器人(Adbot)或者网络爬虫(Web Crawler)来进行遍历网络上的文章并且将文章的关键词储存下来实现的,因为所有的网站都想要让他们的网站内容能够在我们在搜索框上打入关键字时出现,所以不会阻止Adbot阅读付费专区。
如果我们假装我们的设备是谷歌广告机器人也可以实现绕过付费墙√
Hover里面伪装代码是和上面提及的方法一样是通过修改HTTP Header来实现的,具体代码如下:
if (!(rootSearch in paywallSpoofWhitelistDict)) {
//Spoof our device as a Google Crawler
details.requestHeaders = details.requestHeaders.filter(function(header) {
if(header.name === "User-Agent" || header.name === "X-Forwarded-For") {
return false //删除带有IP地址和User-Agent的信息
}
return true
})
var google_adbot_UA = "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/W.X.Y.Z‡ Safari/537.36"
details.requestHeaders.push({
"name": "User-Agent",
"value": google_adbot_UA
})
details.requestHeaders.push({
"name": "X-Forwarded-For", //将其修改成谷歌广告机器人的信息
"value": "66.249.66.1"
})
console.log("Spoofed as google crawler")
}
return {requestHeaders: details.requestHeaders};
这段代码在hover-paywalls-browser-extension/dist/bg_scripts/paywall_scripts/paywall_bypass.js的第62行。
这个方法可以绕过几乎所有的付费墙,Bing~
第3种方法:禁用所有的网站cookies
最后一种方法是通过阻止所有的网络cookie🍪,这个直译是饼干的意思,但其实就是浏览器保留的一部分关于你的信息。比如:点击按钮的次数,访问网站的次数等等
这个方法是最强但也是最不理想的方法,为什么这么说呢?因为上面的两个方法我们仍然可以使用登录,点赞和评论喜欢的文章等等功能,就像我们开通了会员一样。如果我们禁用cookie🍪的话,我们就不可以再登录或者使用这些正常功能了,因为网站无法储存这类信息。
有一些网站会有类似每天只可以免费阅读5篇文章的限制,如果我们阻止所有cookie的话,网站就会一直以为我们是第一次访问,由此来绕开付费墙。实现这个功能的代码为:
//Set Cookie Permission as necessary
if (!(rootSearch in paywallCookieWhitelistDict)) {
chrome.contentSettings.cookies.set({
'primaryPattern': rootSearch,
'setting': 'block' //修改谷歌浏览器的设置来阻止所有的cookie
});
console.log("Blocked Cookies")
}
这段代码在hover-paywalls-browser-extension/dist/bg_scripts/paywall_scripts/paywall_bypass.js的第46行。
这就是这个扩展程序绕开付费墙所使用的主要机制,总的来说目前多数阅读网站都还是可以使用这个工具实现绕过付费墙,希望各位朋友有所收获。
码字不易,喜欢的同学可以留言告诉我一下,下期是希望咱们接着搞crackme还是继续教这种法外狂徒的事情XD。
最后感谢一下Hover的开发人员的开源精神,respect!
参考链接(Reference):
https://jimrouse3.medium.com/how-to-bypass-a-paywall-with-chrome-extension-hover-58688335dcd6
https://github.com/nathan-149/hover-paywalls-browser-extension