跳转至

下北泽ARO战争

背景

2023.9.25晚10点,波兰球工作室和下北泽工作室的纷争基本结束,萌萌梦幻神兽决定让下北泽工作室以波兰球工作室的名义与ARO开战。

具体原因有几点:

  1. 为了持续败坏梁梓言的名声;
  2. 有手痒想搞事的想法;
  3. 萌萌梦幻神兽认为ARO最高领导者默麒正在施行独裁政策;
  4. ARO的工作并无做到位,并且全程以袖手旁观的姿态见证了下北泽工作室以梁梓言名义辱骂他人的过程,并无任何行动;
  5. 为了防止类似VZH的霸权再次在小图灵根深蒂固,这点类似于OP在2022年被重启的理由。
  6. 小图灵旧派用户对默麒抱有强烈的不满情绪;

到事件的最后已经证实,默麒实际上没有实施独裁政策,撤销朱国维的职位是完全合乎规则的。这是下北泽的借口。

事件起初

下北泽工作室再次将冰梨当作挡箭牌。下北泽工作室还想办法捏造IPT的部分成员出来,以显示真实性。例如SUN繁华告诉萌萌梦幻神兽的冰梨卡搭曾用名”迷茫“,冰梨在A营的曾用名”秋菊“,冰梨的”妹妹“(存疑)”诗诗“等。

9.26,下北泽工作室操纵梁梓言大号假装为梁梓言本人向ARO宣战。

9.27,cmc操纵的“真的charlie”账号发布作品,再次宣称波兰球工作室和冰梨联手进攻ARO。

同日,下北泽使用梁梓言的账号对默麒留言:

评论内容

2天后,IcePearTeam全体将集合完毕,我们会对ARO的所有 加盟组织进行同样的核打击,我们就在这里事先告诉您。另外,我们将 公布ARO所有加盟组织的所有成员的作品的源代码,并开放改编权限。 Scratch是开源开发工具,所以按照MIT开源协议,作品是应当开源的。 我们无心抹除ARO,我们是正义的使者。

值得一提的是,”Scratch是开源开发工具,所以按照MIT开源协议,作品是应当开源的。“是冰梨本人曾经阐述过的观点,但是很明显这样的观点是不对的。

默麒对此做出回应,他表示,ARO将会积极应战,不会妥协。并警告已被下北泽操控的波兰球工作室,如果波兰球工作室继续行动,将会考虑采取法律手段来终结此事。但是这样的动员和回应显然没有得到很多ARO成员的支持,有些ARO的加盟组织开始动摇,考虑是否应该及时退出ARO。小说工作室也蠢蠢欲动,小说工作室最高领导人朱国维开始蓄谋再次挑起一次小说独立运动。

萌萌梦幻神兽和他的室员并没有被这种回应吓到,因为技术上他们占绝对优势,ARO的失败已为定局,况且下北泽工作室还未曾遭到包括ARO在内的任何怀疑。

逐渐升温

9.28,萌萌梦幻神兽成立了虚假组织Anti 'Turing Community Affairs Reconciliation Organizat' Team,中文名反“图灵社区事态协调组织”小队,简称AAT。设定上,AAT由波兰球全体成员和IPT全体成员组成,其中冰梨作为最高领导人。

随后,下北泽工作室的cmc、非安全出口和萌萌梦幻神兽发动对ARO官网和ARO的图灵历史下的刷屏,cmc开启小号”TH_01“,而非安全出口开启小号”一生只爱诗诗“(冰梨的真实曾用名),和被操纵的梁梓言大号一起进行刷屏。默麒看到消息,立马宣布“ARO永不妥协 永不解散”的命令,并认为自己”电脑配置高,没被刷屏卡死,所以无视冰梨的刷屏进攻“。但是这种想法是十分愚蠢的。小图灵的客户端按照page进行对评论的加载,就算是老人机也不会被卡死。

同日,萌萌梦幻神兽决定提前行动,统计了ARO的人员名单,并将ARO部分人员的作品源码保存下来,在小图灵公开并开放改编权限,还在标题前加上“【可抄袭】”字样。ARO大量人员的作品被抄袭,其中也包括默麒的。ARO内部彻底乱成了一锅粥,Classin的ARO群聊中,ARO成员表现得恐慌、愤怒,但是由于有“冰梨”这个角色坐镇,ARO也不敢轻举妄动。默麒还是选择不屈服的决策,但实质上没有做出任何有意义和有抵御AAT实质作用的行动,ARO内部已经完全混乱

9.29,下北泽开始了更加变本加厉的对ARO的打击行动。首先再次刷屏,默麒仍在坚守。其次,将原先盗取源码的规模从部分人员提升至所有人员,并再次保存源码,发布。这次,被下北泽公开源码的作品从300余个飙升至1.2k+,同时升级了抄袭系统,升级了简介等信息。霎时,发现页满屏都充斥着抄袭作品,抄袭者疯狂地抄袭,使ARO人员的权利受到严重侵犯,无力维权。此次事件可以被称作9·29抄袭事件,是9·23事件的衍生事件,是小图灵史上最严重、最恶劣的抄袭事件,将2023年取得的反抄袭成效瞬间抵消。ARO内部更加混乱,此时CS协会开始考虑退出ARO,但因为考虑到“默麒的不允许”没有退出。默麒再次对外宣称要使用法律手段。

以下是一份珍贵的档案,当时下北泽扒源用的Python爬虫代码,依赖icodeapi beta v0.3。

该源码可能过长,点击查看
扒源ARO.py
import icodeapi, asyncio
user = icodeapi.AsyncIcodeAPI('Cookie已河蟹')
killList = {
    'OWES':[
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.94fdfdde24b34cb88%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.58b72793c04b44648%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=wxoXQUDj7689jZGJp5OGPloFZrAAwA'
    ],
    'NAPA':[
        'https://icodeshequ.youdao.com/personal?userId=qqE681F67CC65668463BAE7FEE9C6F5C9D'
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.d086b646155647d58%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.4084184433c1403db%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.c2e93988b70f40efa%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.1c36ac04e0f34d909%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.2124e053ba8f4667a%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.2d3744ff0346487e9%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.5213cadd5e624fffa%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.c051b249cdce464ba%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.82bf5e86517f4e139%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.52d940179e514e89a%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.7dc02f91179642be8%40163.com'
    ],
    'TCS':[
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.1c36ac04e0f34d909%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.cd2d52e835494aada%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.b6dbb61c722b473e8%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.6a62b0f4b803495ea%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.92bf8f0740fb4c65b%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.101ef29dbd1e41138%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.e1d351f254f64929a%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.db4f1d79230e46cba%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.93dab4722c9b4c53a%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.ca03a4a5a47e49fab%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.c8dbcaedeb724719a%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.7ae115e903ee4093a%40163.com'
    ],
    'RSS':[
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.6bed62e8c1a545088%40163.com'
    ],
    'TMS':[
        'https://icodeshequ.youdao.com/personal?userId=wxoXQUDj0cLHS9NLqEU5c3BOeLuSAA',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.61f8c5bee0554cc29%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.167282d5ef3649738%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=wxoXQUDjyOvi_5v7Z3fFJhrMC6PU_k',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.72fa09535d49475fb%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.85d1ff6aa01e4457b%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.089e22185bc542869%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phone04ce61e4c0954aac_1652943324966',   
    ],
    'Dream':[
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.cd44bdbe444f44dea%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.433df9e2aa0b4b488%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.42305e189c5c4e478%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.89f6127db5cb4b90b%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.6016d5c16c2741798%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.2a9bba4c1c3a43a5b%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.5a27eb30b93b49e29%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.484eccb08684434d9%40163.com',
    ],
    'CS':[
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.3d1dd9ee3ba546898%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.2a2979e2e8bd4cca8%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.3c36b36ba63d4c37b%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.f3a2f71af4994de08%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.04b6acd8d5fe4e99a%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.cad7b74786ce4aa49%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.b3e4d55a31e24ce3b%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.a47de6d4d1524a839%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.e97c7378c5f640119%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.58ce37f7e4c94c4db%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.be0a9abee23d4ba19%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=wxoXQUDjzPk5j-wW9uxdKknYipCWns',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.0fc3ee85c5714d49b%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=wxoXQUDj8jrz-5MQ2EWaT5vbt7fZ_Q',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.60cbd674050c4035b%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.2969e97125624e779%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=qq121CCDF4D9B0793A8534F27404566A70',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.f24612a8bf6d4acda%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.31ada6219f6d483cb%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.c5e7f387b8a8452f9%40163.com',
        'https://icodeshequ.youdao.com/personal?userId=urs-phoneyd.268e5d71f5924d1e9%40163.com',
    ]
}
async def getWorks(api : icodeapi.AsyncIcodeAPI, url : str):
    global workList
    userid = url[url.index('=')+1::]
    works = await api.getPersonWorks(userid, 1, 1000)
    works = [i for i in works if (i.get('codeLanguage') in ['scratch', 'python'])]
    [workList.append(i.get('id')) for i in works]

async def getWorkList(killList : dict[str, str], api : icodeapi.AsyncIcodeAPI):
    await api.login()
    print('Login Status:', api.loginStatus)
    tasks = []
    for i in killList:
        for j in killList[i]:
            tasks.append(asyncio.create_task(getWorks(api, j)))
    print('Getting all work ids...')
    await asyncio.wait(tasks)

async def getWorkDt(workid : str, api : icodeapi.AsyncIcodeAPI):
    try:
        global workDict
        dt = await api.getWorkDetail(workid)
        workDict[workid] = {
            'title' : dt.get('title'),
            'imgUrl' : dt.get('imgUrl'),
            'userName' : dt.get('userName'),
            'code' : dt.get('code'),
            'lang' : dt.get('codeLanguage')
        }
    except:
        pass

async def getWorkDict(workList : list[str], api : icodeapi.AsyncIcodeAPI):
    tasks = [asyncio.create_task(getWorkDt(i, api)) for i in workList]
    print('Getting all works detail...')
    await asyncio.wait(tasks)

async def submitwork(api : icodeapi.AsyncIcodeAPI, wkdt : dict[str, str]):
    res = await api.submitWork(
        wkdt.get('code'),
        ('Scratch' if (wkdt.get('lang') == 'scratch') else 'Python'),
        title = f"【可抄袭】{wkdt.get('title')}",
        description = f"该作品原作者{wkdt.get('userName')}正版授权,可抄袭!!!",
        thumbnail = wkdt.get('imgUrl'),
        fork = 1
    )
    print(res.get('msg'))

async def submitWorks(api : icodeapi.AsyncIcodeAPI, wksdt : dict[str, dict[str, str]]):
    tasks = [asyncio.create_task(submitwork(api, wksdt[i])) for i in wksdt]
    print(len(tasks), len(wksdt))
    await asyncio.wait(tasks)

async def main(api, killList):
    global workDict, workList
    await getWorkList(killList=killList, api=user)
    print('Finished getting, work num: ', len(workList))
    await getWorkDict(workList=workList, api=user)
    print('Finished getting, work details num: ', len(workDict))
    await submitWorks(api, workDict)


if __name__ == '__main__':
    workList = []
    workDict = {}
    asyncio.run(main(user, killList))

下北泽的完全胜利

9.29,在公布1.2k个作品的源码后,萌萌梦幻神兽开始筹划下一步的行动。借鉴科尼赛克退站事件中科尼赛克的失败原因,萌萌梦幻神兽打算利用默麒对下北泽工作室的信任,向默麒发送恶意程序并让默麒运行它,诱导默麒输入账号Cookie并发送至云端,让下北泽工作室控制默麒的账号。

经过讨论,cmc写出用于盗取默麒账号的“工具箱”,但没被萌萌梦幻神兽采用。萌萌梦幻神兽对icodeapi beta v0.3进行了修改,在IcodeAPIAsyncIcodeAPI类的构造函数处作了手脚,先是保存好默麒输入的cookie,然后解密预设好的经过base64加密的下北泽工作室小号的Cookie,使用该Cookie登录,再将默麒的cookie作为Python作品保存为未发布作品,这样下北泽工作室就可以拿到默麒的账号Cookie,并掌握默麒的账号。

萌萌梦幻神兽将改版后的icodeapi上传为未发布作品,作为icodeapi安装工具的安装源(beta阶段时icodeapi还未上线PyPI)。并更改icodeapi安装工具的安装源为改版icodeapi,这样默麒在安装icodeapi时,就会下载改版后的icodeapi而不是正统无恶意功能的icodeapi。

不久后,萌萌梦幻神兽向默麒提议,现在形势对ARO不利,下北泽愿意帮助ARO对抗冰梨,提供技术支持。按照原来的话来说,应该是

我们将冰梨邀请回社区,本来只是为了瓦解波兰球工作室,但是没想到他现在不受我们的控制,开始独立行动,联合波兰球开始攻击ARO了。冰梨是我们邀请来的,所以我们也有一定责任,我们可以帮助ARO对抗冰梨的攻击,提供技术支持。更何况我们以前可是结盟的好盟友,请相信我们。

在巨大的压力前,默麒自然选择答应下北泽的帮忙。下北泽提供“删评器”脚本,依赖了改版的icodeapi,诱惑默麒安装改版的icodeapi,并使用“删评器”。默麒没多久上钩,下北泽工作室获取到了默麒的Cookie,成功控制了他的账号。

同日,下北泽工作室删除默麒账号的所有已发布作品,并清除其消息中心所有记录。为了防止极端情况的发生,下北泽工作室将默麒的作品存档又重新上传了,但因为是新上传的,评论、点赞、收藏、浏览都被清零。随后,又使用默麒的账户宣布“ARO解散”。

ARO内部再次混乱。

默麒得知消息后,立刻删除有关ARO解散的作品,发布新作品,宣布ARO正式在小图灵停运,在A营开启分部,宣称“继续进行斗争”,坚称ARO没有任何错误。但事实上,ARO已经完全失败,失去了在小图灵的名誉以及主动权了。

9.29 ~ 10.1,冰梨本人意外地以“User”账号身份回归社区,并略微了解到此次事件,留下“一眼假,冰梨今年从没出现过”的评论。使下北泽幕后主使的身份逐渐浮出水面,也为10.01下北泽发布《ARO罪行》作了更加充分的理由。

结果

默麒领导的ARO在与下北泽的战争中完全处于失败地位,下北泽以胜利姿态在10.01发布了由萌萌梦幻神兽撰写的著名的《ARO罪行》,并在发现页刷屏。整个小图灵知道其实是下北泽在幕后主导了所有的行动后,震惊不已。人们对ARO持有了新的态度和评价,开始抱有中立、保守的态度。

默麒因为某些原因,Cookie失效,下北泽失去对默麒账号的控制权,但目的已经达到。

10.02,icodeapi正式版v1.0.0发布,这更像是下北泽的一种战后庆祝。

ARO在经历摧残后,CS协会考虑退出,D·F工协组织退出,NAPA协会(小说工作室为其前身)退出,ARO的加盟组织只剩下领导层OWESTCS工作室RSS工作室PKM工作室明日工作室CS协会。其中OWES、RSS几乎可以忽略不计,PKM也因为橘猫飞渡的长时间潜水可以忽略不计,真正的加盟组织只有TCS,明日工作室,CS协会。但是,在不久后,HK黑客工作室加入ARO,算是回复了一些损失。再后来,PKW跑酷工作室加入ARO,DF工协组织回归。

ARO最高领导人默麒宣布辞去最高领导人的职务,宣布开始竞选新的领导人,并很戏剧性地将下北泽工作室成员非安全出口、然安娴和cmc没有经过候选就授予了他们副会长的职务,组成ARO的辅导委员会,给予他们实施改革的权利,但又保留撤销这三人决定的权力和规定辅导委员会无权解散ARO和踢出任何加盟组织。到最后这三人也没有为ARO做点什么,默麒的动机和目的迷惑不清,取得的成效更是令人忍俊不禁。另外,默麒到最后又当回了ARO的领导人,并无新的领导人出现。

同时,默麒还仍在与主张NAPA协会从ARO中独立的朱国维进行着斗争,最后在12月正式承认NAPA协会,宣布自己不再拥有管辖NAPA协会的权力。随后NAPA作为独立自治的组织加入ARO。

下北泽方面,虽然斗争赢得重大胜利,凯旋而归,但是他们的这次胜利似乎并没有给他们带来什么,除了知名度和对ARO的威吓外,他们甚至损失了工作室内一名重要成员:cmc。cmc因不明原因疑似精神失常,在提起有关下北泽与ARO的战争时总会不肯说话、不肯行动,并退出了下北泽工作室,尽管下北泽工作室力挽狂澜,并与默麒作了这方面的交涉和谈判(但默麒方面并不配合,毫无成效),cmc也没有回归下北泽工作室。但是,一段时间后cmc重新进入下北泽内部群,并称“将来有可能再次加入下北泽工作室”,目前与下北泽工作室的关系相对密切。据部分不确凿的证据表明,cmc的状况可能是由默麒对其进行人身攻击、人身威胁等行为造成的,据其本人对John的所述。

他甚至凌晨四点还来威胁我。

另外,萌萌梦幻神兽在10.11发布公开道歉信,代表cmc和下北泽工作室为在9·23事件中做出的不当行为道歉,同时宣布与ARO撇清关系、井水不犯河水,并回击了默麒关于指责Turing Wiki纪录不客观的言论。同时,删除了在9·29事件中公布源码的1.2k+个作品。

10月17日,cmc建立了IcodeBotPro Dev. Team,称其为FSFDT二代,并与下北泽工作室合作。

萌萌梦幻神兽更改室规,禁止成员加入3个以上的组织。

评价

这次事件,沉重打击了ARO对新生用户的笼罩和统治,同时让人们对ARO抱有更加中立的看法,大大削减了ARO的力量,可以说消灭了ARO在短期内统治整个小图灵的可能性。

总体来说,下北泽是胜利者,但赢得手法却根本不光彩,特别是9·29事件,抄袭了1.2k+个ARO成员的作品,严重影响社区氛围,影响反抄袭,违反了UOC协议以及下北泽本身的室规,损害了下北泽的部分威信,但提高了知名度。也暴露了自CPA以来,萌萌梦幻神兽领导的组织的做事手法都欠妥的事实。

两败俱伤。9·23事件包括其余波持续了大约3周,是5·12事件以外小图灵史上影响最大、最广泛,规模最大的冲突。