SheepChef Blog
何時までも夢へ求めてる
SheepChef Blog

【技术向】手把手教你绕过淘宝“绿网计划”

近期,或许是相应相关政策号召,淘宝开始实行“绿网计划”,屏蔽掉“不适合未成年人查看”的商品。

被屏蔽的商品主要有游戏装备,游戏账号,数码产品(比如Windows的DTS和杜比音效),成人用品等。

通过“绿网计划“,未成年人便无法访问商品页面,看不见商品的信息,自然也就没法购买了。

作为一个懂技术的人,便想通过一些技术手段来规避掉这个恶心的机制,不要求能够直接成功下单,好歹让人能看见商品详情页面,这样方便通过第三方代购等其他渠道购买。

那么,废话不多说,开始分析!

初步分析

首先,在使用PC浏览器打开一个”绿网计划“内商品页面的时候,会短暂地【闪现】一下正常的商品页面,然后页面迅速被替换为”绿网计划“的页面。那么,先看看HTML的结构——

额,修改之后的HTML什么都没有剩下

可以看见,HTML页面被完全重写了,什么内容都没有剩下。作为一个熟悉Javascript的人,推测使用了 location.href 来直接重定向。这回我们眼疾手快,抢在页面重定向之前下了JS断点——

嘿,果然是重定向

在断下来之后,检查控制台的网络选项卡,众多请求中能看到一串关键的JSON,也就是上图中所示。

这下我们就明确了”绿网“的逻辑了,也就是重定向。进一步下断点分析,我们看到了详细代码逻辑——

通过修改location.href来实现页面跳转

这下,我们的目标就很明确了——需要通过某种手段让这里的重定向失败!

解决方案

要想阻止页面的重定向,有多种解决方案,不同的解决方案优点不同

各位读者可以自行选择解决方案,本文会一步一步地将解决方案的实现步骤写出来。

目前已发现的解决方案有如下3个。

解法1# 网络请求阻止(推荐)

鉴于location.href的特殊性,现行的浏览器不可能对location对象进行劫持,所以不能通过js层面的hook来阻止页面的重定向。如果非要修改,那也只能从浏览器内核层面修改,属于是杀鸡用牛刀了。

我们注意到,访问的url是从上方的sibData中获取来的,那么先小试牛刀,用浏览器自带的”网络请求阻止“来强行截掉这个sibData。这样一来重定向的url便无从获取——

嘿!在阻挡这个sibData的获取后,页面可以正常访问了!

页面恢复正常

那么我们在本地的代理软件或者防火墙(这里的示例是V2rayN)处配置一个简单的block,阻挡这个域名下所有的请求,就可以一劳永逸啦!

解法2# 浏览器脚本本地替代 (较繁琐)

这个方法比解法1复杂,但是比下一个解法要简单。注意,本解法只适用于Chromium内核的浏览器

本解法采用了Chromium内核支持的一个开发功能,即页面资产的本地替代。

接下来将分步骤演示本解法的最速实现过程:

准备工作,打开淘宝网页版,登录你的淘宝账号。然后在本地目录下新建一个空文件夹作为备用,记住这个文件夹的名字和位置。

第一步,打开新的标签页,然后提前打开浏览器的F12开发者工具备用。

第二步,在地址栏输入一个淘宝(不是天猫)正常商品页的链接。(不要使用被绿网计划屏蔽了的商品链接,否则操作难度增加)

第三步,访问你输入的链接,因为这个链接没有被屏蔽,所以页面会正常加载。你会在开发者工具中看到很多内容。

第四步(重要),打开”网络(Network)”选项卡,你会看见很多网络请求,在上方的筛选器中输入:

??index-min.js

敲击回车后,会看见一个请求被筛出来,如图:

第四步示意图

第五步(重要),打开开发者工具的“源代码(Sources)”选项卡,然后在开发者工具栏的左上方打开“覆盖(Overrides)”选项卡,点击下方的“选择替代文件夹(Select folder for overrides)”按钮。将会弹出一个窗口要求你选择一个文件夹,接着,找到你提前建立好的空文件夹,点击确认,然后再在上方的权限确认中点击允许(Allow),如图。(示例中这个文件夹的名字叫”substitute”)

示意图
点击允许

到此为止,你应该会看见:

如果和图示不符(显示语言除外),那么你的操作过程中出现了错误

第六步(重要),回到网络选项卡,右键单击你筛选出来的唯一那个的请求,然后在右键菜单中选择“保存以备替代(Save for overrides)”

第七步(关键),第六步完成之后,开发者工具会自动跳转到源代码窗口,显示出一个代码文件。找到这个文件的第1949行(如果和下图不一样,那么上下找找。如果你的文件显示得密密麻麻,那么点击下图所示的位置来格式化代码),然后按照下方第三张图所示,注释掉这一行内容。最后按Ctrl+S,保存你的修改。

点击这里格式化代码
1949行的示例(未修改)
1949行的示例(已修改)

不要忘记保存,确保修改之后按Ctrl+S保存修改!

到此为止,修改就结束了!

最后,不要关闭开发者工具,在浏览器地址栏输入一个绿网计划保护的页面并访问,你会看见页面正常加载,不会跳转到绿网计划。

以后如果你想绕过绿网计划,那么先打开F12开发者工具再访问,就不会跳转到绿网计划的页面。

解法3# 中间人攻击 (较繁琐)

这个方法操作性较上一个差一些,不过也是最具技术性的方法。

从上文我们得知,sibData本质上是一个JSON请求。

比起直接阻挡这个请求,可以通过对请求发起本地中间人攻击来篡改请求内容,这样对网页内容的影响相对较小(虽然我个人是无感)

要发起中间人攻击,可以自己写程序,也可以使用现成的工具。为了方便,这里使用广为人知的Fiddler。

首先,在Fiddler内启用下行断点,然后在浏览器内打开商品标签页。第一个请求将会是HTML的请求,手动放行这个请求。

接着,Fiddler会收到一系列请求,在请求序列中找到 detailskip.taobao.com 。如下图所示。

双击这个请求,在右侧菜单里能看见请求的内容。这个时候需要考验各位读者的手速如何了,因为淘宝页面js发起的请求有超时时间(大概是十几秒),接下来需要在十几秒的时间内完成如下操作:

第一步,在数据中找到redirectUrl这个键值对,如下图。

第二步,删除掉引号内的全部内容,如下图。

第三步,放行你篡改过的这个请求,点击 “运行到完成”,如下图。这样网页前端的JS就收不到任何重定向链接,也就不可能重定向到绿网计划页面了。

最后,取消下行断点,放行所有其他请求。

至此,你就完成了一次中间人攻击。回到浏览器,商品页会正常加载,不会跳转到绿网计划。

如果你很熟悉fiddler脚本,你可以尝试编写一个脚本来自动地执行这个过程,这样可以让你解放双手。本文就不再涉猎了。

验证成果

如果你认为你已经成功地完成了上述3个解法的任意一个,可以尝试验证一下。

注意,直接搜索绿网计划内的商品是行不通的,因为淘宝的搜索会屏蔽掉相关词条和产品。

本文在此提供一个链接,你可以通过直接访问这个链接来验证你的成果。

特别声明,本站并没有为这个链接打广告,也从来没有收受过任何商业赞助,所以请不要质疑这个部分的正当性,不推荐购买该链接所指向的商品。

最新内容

近期又发现,部分天猫商品也会被绿网计划管控。而且与普通淘宝网店不同,无法通过解法1解决,但可以通过中间人攻击解决。

针对天猫商品,可以通过退出登录的方法自由登入商品页面。因此,目前无需进一步分析。

写在最后

淘宝搞”绿网计划”属于是防君子不防小人。我个人通过这个方法看到商品详情后,经过尝试,发现是不能直接下单的(会失败),仅仅能够看到商品的价格等信息。

不过这样已经足够了,各个平台上都有相关代购服务,只要能看到商品信息,绿网计划就彻底成了摆设。完全可以通过代购购买,绿网计划阻挡的只是”挑选商品“这个过程。

不过,从另一个角度看,绿网计划也有其存在的合理性。毕竟也不是所有的未成年人都会JS和Web前端的相关计算机知识,能够挡住大多数未成年人,绿网计划也算是达到其目的了。

4.9 16 投票数
文章评分
感谢您一直阅读到本文的最后!
如果您觉得本文写得不错,欢迎您转发支持我们。
# # # #
首页      IT技术      【技术向】手把手教你绕过淘宝“绿网计划”
Avatar photo

SheepChef

文章作者

Webmaster

订阅评论
提醒
guest
13 评论
最新
最旧 最多投票
内联反馈
查看所有评论
asdf

篡改后是无法进行购买操作的

这里演示一段py自动篡改的代码
import mitmproxy.http
from mitmproxy import ctx
from mitmproxy import flowfilter
import json

class Interceptor:
    def __init__(self):
        self.filter = flowfilter.parse(“~u https://h5api.m.taobao.com)

    def response(self, flow: mitmproxy.http.HTTPFlow):
        if flowfilter.match(self.filter, flow):  
            try:
                t = flow.response.json()
                t[“data”][“pcTrade”][“redirectUrl”] = “”
                t = json.dumps(t)
                flow.response.content = bytes(t,encoding=‘utf8’)
            except:
                pass

addons = [
    Interceptor()
]
使用mitmweb –listen-port 8888 –web-port 8848 -s main.py命令启动然后安装证书配置代理即可

Elhua

谢了,哥

实名用户

手机淘宝呢?可以通过Surge之类的东西重写拦截跳转吗

匿名用户

大佬有办法过滤掉天猫商品吗,-天猫/tmall 不好用了

匿了匿了

有个外区账号下载淘宝lite就能解决

spijzn

能看不能买,更难受了

MistyRainCC

哇 太强辣

ZZH

十分感谢

Dreaminko

可以通过油猴脚本来拦截这玩意吗🤔

iko

感谢大佬 文章非常有用

GEM

多谢,很大的帮助

SheepChef Blog

【技术向】手把手教你绕过淘宝“绿网计划”
一个小教程,教你怎么绕过淘宝网页版的”绿网计划“。
扫描二维码继续阅读
2022-11-13