内网IP调整和ShadowRoot学习导致的Chrome历史修改由于IP频繁变动导致本地项目地址栏的历史记录全部失效。顿时,脑洞大开。有没有办法修改本地历史记录??思路是:假设我原来的IP是192.168.1.51,新IP是192.168.1.63,历史记录有http://192.168.1.51:8080/test.html,我用一些方法强行修改Chrome历史记录到192.168.1.51被192.168.1.63代替,这样下次在地址栏输入test时,会自动填写http://192.168.1.63:8080/test.html。现实是残酷的,Chrome软件的历史似乎是二进制文件,也可能是出于安全考虑。为了快速解决问题,我不打算研究如何修改二进制文件。于是我换了host,给本地域名映射了一个Ip,为了方便内网其他新手用户快速修改host,我给他们做了一个bat文件,执行完后,加一个修改主人。参考批处理文件中的ECHO命令显示换行符(因为我安装adblocker访问时页面显示正常,后来朋友说看不到,所以划掉)。echo。>>%WINDIR%\system32\drivers\etc\hosts&echo192.168.1.63bs.ybj.com>>%WINDIR%\system32\drivers\etc\hosts当然后面要改IP就得改手动修改host文件~如果你懒得改bat文件,新加一个同域名指向不同IP的可能没问题,也可能导致页面每次卡20s左右你访问它的时间。当然这里不考虑系统相关的文件修改权限问题~其他思考1:ShadowRoot探索修改本地历史记录的想法萌生后,我在历史记录chrome中搜索192.168.1.51://history/顺便说一句,发现有200多个条目,我打算将它们导出为文本替换(实际上没有意义),但是我发现在Console面板中,这条历史记录无法遍历并输出所有通过普通JS方法获取地址,通过观察Elements面板的DOM结构,发现原因出在这个#shadow-root(open)无法直接获取该节点中的DOM元素。我以前从未研究过ShadowRoot。我在MDN上找到了,它是和主DOM树分开渲染的,请问我这时候有办法获取DOM吗?子树的根节点中的元素呢?当然,参考Howtoaccesselementsunder`shadow-root`at'chrome://downloads'usingjqueryandselenium?,原来还有这个神奇的/deep/。所以试试我写了一段:constHISTORYITEMS=document.querySelectorAll('#history-app/deep/#content/deep/#history/deep/#infinite-list/deep/history-item/deep/#title');for(leti=0;i
