批量修改谷歌浏览器(Chrome)地址栏保存的历史记录及导出功能探索研究

内网IP调整引发的Chrome历史记录修改及ShadowRoot的学习

由于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文件给他们, 执行后就追加一条来修改host, 参考批处理文件中ECHO命令显示换行(因为我装了adblocker访问的时候页面展示正常, 后来朋友说看不到, 故划掉).

echo. >> %WINDIR%\system32\drivers\etc\hosts & echo 192.168.1.63 bs.ybj.com >> %WINDIR%\system32\drivers\etc\hosts

当然这样以后如果再换IP, 就要手动就改一下host文件了~ 如果偷懒改这个bat文件, 有追加一条新的同域名指向不同IP, 可能不会出问题, 也可能会导致每次访问页面卡20s左右出来. 当然这里我们不考虑文件修改权限的系统相关的问题~

其他思考一: ShadowRoot探索

关于修改本地历史记录的想法诞生后, 我顺便在历史记录chrome://history/中搜索了一下192.168.1.51, 发现有两百多条, 我打算将他们导出成文本替换(其实没什么意义), 然而我发现, 在Console面板里, 这个历史记录居然无法通过普通的JS方法将所有的地址遍历输出, 通过观察Elements面板的DOM结构, 发现原因在于这个#shadow-root (open)这个节点内的DOM元素不能被直接获取到. 从来没有研究过ShadowRoot的我懵逼了, MDN上查到, 它与主DOM树分开渲染, 那么此时我是否有办法获取到DOM子树的根节点内的元素呢. 当然可以, 参考How to access elements under `shadow-root` at ‘chrome://downloads‘ using jquery and selenium?, 原来有这个神奇的/deep/. 于是试着写了一段:

const HISTORYITEMS = document.querySelectorAll(‘#history-app /deep/ #content /deep/ #history /deep/ #infinite-list /deep/ history-item /deep/ #title‘);
for (let i = 0; i < HISTORYITEMS.length; i++) {
  let item = HISTORYITEMS[i];
  let url = item.getAttribute(‘href‘);
  let name = item.getAttribute(‘title‘);
  console.log(`${i}: ${name}‘的URL地址是${url}
  `);
}

由于默认显示条数不会全部显示出来, 所以可能须要手动滚动至底部加载完成后执行.

其他思考二: 真的可以批量修改Chrome存储的历史记录值

后来, 我还是抱以试试的想法去尝试着修改Chrome历史记录, 没想到居然还是很容易的. 确认及准备好以下工作:

  1. 我的系统Windows 10 64bit
  2. 我的Chrome版本63.0.3239.132(正式版本) (64 位)
  3. 下载HxD编辑工具, 直接下载, 安装并打开软件
  4. 关闭Chrome浏览器, 并打开用户个人配置相关文件的目录, (请修改对应的用户名whidy部分替换)
    C:\Documents and Settings\whidy\Local Settings\Application Data\Google\Chrome\User Data\Default

    备份好History, History-journal, History Provider Cache三个文件(防止误操作造成的Chrome破坏造成的损失)

然后直接用HxD依次打开这三个文件, 使用编辑器的替换功能, 将192.168.1.51全部替换为192.168.1.63, 保存.

完成后, 再次启动Chrome, 如果没有发生什么异常, 我想这个奇葩想法的功能就实现了. 我成功的替换了280多条历史记录~

原文地址:https://www.cnblogs.com/homehtml/p/12050632.html

时间: 2024-07-29 06:41:48

批量修改谷歌浏览器(Chrome)地址栏保存的历史记录及导出功能探索研究的相关文章

python批量修改服务器密码,同时保存execl表格

#!/usr/bin/env python #coding:utf8 #随机生成自定义长度密码 from random import choice import string,pickle def GenPassword(length=8,chars=string.ascii_letters+string.digits): return ''.join([choice(chars) for i in range(length)]) def passlist(r_user,c_user,ip_li

织梦批量修改栏目的保存目录和文章命名规则

批量修改栏目的保存目录 比如,想批量去掉所有栏目里的/a 核心-批量维护-数据库内容替换 Ps:以后创建栏目不想自动带/a的话,在 系统-系统基本参数-站点设置-文档HTML默认保存路径,删除/a即可 批量修改栏目的文章命名规则 比如,想批量去掉所有栏目里的文章命名规则里的 {Y}/{M}{D}/ 核心-批量维护-数据库内容替换 原文地址:https://www.cnblogs.com/dedevip/p/9902429.html

如何查看Chrome浏览器保存的账号密码?

最近使用了chrome自动生成的密码,一时着急怎么也想不起来,就想到Chrome中保存了密码,怎样从Chrome浏览器中查看到已经保存的密码呢,下面就来看一看.某种意义上上,查看Chrome的密码比查看IE的更简单,因为查看IE密码还需要借助第三方工具,而查看CHrome密码只需一段简单的代码就行-- 查看Chrome密码只需一段代码 在Chrome浏览器的地址栏里输入" chrome://chrome/settings/passwords ",然后Chrome自动帮你保存的密码就会瞬

批量修改vss工作目录

vss作为源代码版本控制工具,可以针对不同的文件夹设置不同的本地工作目录,这样可以方便我们不同的个性化需求.但是往往实际情况是,我们设置了不同的工作目录,后来却发现导致引用混乱,每个人每次获取项目文件都需要重新修改一边引用,才可以重新编译成功.这我们才知道只应该针对完全独立的不同项目才有必要设置不同的工作目录.这时候我们往往想批量修改一下vss的工作目录,但是却发现子目录并没有跟着做相应的更改.那我们怎么办呢?    由于vss将用户的配置都保存在服务器上,所以我们可以在服务器上找到users下

组策略技巧之批量修改本地管理员密码

         基于一些特殊的原因我们需要修改本地管理员的密码,正常情况下,我们需要手动修改 但是在域环境中,我们可以通过组策略来统一修改本地管理员密码.修改方法个人找到的可以 分为两种,一种是通过脚本来统一更改(缺点很明显是比较死板,缺乏灵活性)一种是通过组策略 新增加的首选项功能来统一修改(有点很明显就是灵活性很强,定制型好).         一.使用脚本来修改密码 脚本是用的是VBS脚本 strComputer = "."   Set objUser = GetObject(

Axure谷歌浏览器Chrome扩展程序下载及安装方法

对于很多需要设计产品原型的朋友来说,Axure RP Pro可谓是非常方便.好用的一款软件,因为它不仅能绘制出详细的产品构思,也能生成浏览器格式的产品原型.但是如果想把原型拿给客户查看,千万记得给浏览器安装Axure扩展程序哦. Axure谷歌浏览器Chrome扩展程序使用说明:打开谷歌内核的浏览器,在浏览器中地址栏中输入chrome://extensions/  或者点击浏览器的右上角选择更多工具->扩展程序,将下载到本地的.crx文件拖入到扩展程序中,点击确定完成安装即可. 注意是拖入!!!

C++开发人脸性别识别教程(18)——辅助功能之文件名批量修改、方法验证

时光推移了30多天,这个人脸性别识别的小项目也接近尾声了,预计再通过三篇博文的篇幅来完成这个项目的收尾工作.在这篇博文中我们再为程序添加另外两个小的辅助功能:文件名批量修改.方法验证. 一 文件名批量修改 批量修改文件名是一件很基础也很常用的小操作,核心操作就是图像文件的批量读取.批量改名.批量保存.基本思想就是把文件读出来,然后在保存回去(注意不要和别的文件发生覆盖),从这个角度来讲文件名批量修改与上一篇博客C++开发人脸性别识别教程(17)——辅助功能之人脸批量分割中的人脸批量分割简直如出一

Powershell批量修改AD账户登陆到的计算机

Powershell 批量修改AD账户登陆到的计算机 上个月有个项目中碰到这样一个需求,讲述步骤前先描述下客户的实际情况:因安全考虑需要,域内的计算机之前都已经设置了指定登陆到的计算机,目前的项目是从Lotus邮件系统迁移到Exchange 2010,Lotus工作流迁移到泛微OA,域内账户输入账号和密码后不能登陆到Exchange系统.原因就是设置了账户的登陆到计算机属性,因为Exchange是新上的系统,没在指定范围内,所以需要添加Exchange服务器CAS01,CAS02,Mail,Ma

orcad元件属性批量修改及BOM表

本文适合于没有使用CIS的情况下,提高元件属性修改的效率和BOM生成. 第一步:编号 首先给元件编好号: 如果是沿用旧工程,用这个编号.如果是创建的新工程,使用第二项,强制从头开始编号.因为编号与PCB是相对应的,如果任意改动旧工程的编号会导致PCB出错,所以添加新元件后通常都是使用自增编号:而新工程不会存在这个问题,从头开始编号正规.美观. 第二步:导出属性表格 选择导出的路径,将文件导出来. 在文件上右键,选择用EXCEL打开: 它里面有好多默认属性,这个不用管,右键插入列,将自定义的属性加