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
16 评论
最新
最旧 最多投票
内联反馈
查看所有评论
cangshu

我为什么解法2的第四步筛选不出那个东西,没找到

shisan

@cangshu: 一样 这个大佬还在么 这个淘宝想要充游戏也充不了

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