使用JavaScript破解web


Posted in Javascript onSeptember 28, 2018

并非所有的黑客行为都是恶作剧。下面是如何使用JavaScript使浏览器更好的方法。

JavaScript的在线资源并不缺乏,从教你基础知识的课程到应用程序创建的教程。在本文中,我将解释如何使用JavaScript创建有用的浏览器黑客,以提高您的Web体验和提高工作效率。这篇文章不需要您自己开发应用程序,甚至不需要对产品有特别深入的了解。

书签的力量

我们都知道书签有多有用。它们允许您保存到网页的链接,对其进行分类,并添加其他数据(元数据),以帮助您在将来快速找到该链接,并将其存档到您可以轻松导航的结构中。许多人不知道的是,您还可以将微小的代码片段保存到这些书签中,这些书签是在您所在的网页的上下文中执行的,包括对其结构和样式的访问。

如果你打开Facebook控制台,你会发现它的开发者非常反对这种窥探-这是有理由的。即使没有访问他们的代码,你也可以进行修改,甚至破坏一些应用程序。

使用JavaScript破解web

Facebook的开发者不想让你弄乱他们的控制台。

不过,你可能会忘记你输入的内容,或者丢失一些文本。或者,如果您像我一样,保存您打开的文件,复制它们,到您想要的网站,打开控制台,粘贴和运行的过程似乎需要很大的努力。下面是一些我用来检查网页的长度的代码(用我正在使用的设备上的屏幕来衡量)。这在Edge,Firefox,Chrome,甚至我的手机上都适用:

javascript:alert(document.body.scrollHeight / window.innerHeight)

如果我知道一页有多长,我可以预先决定是否要读。我用它来向客户展示各种设备上有多大或多小的网页。

下面是我使用的另一个工具,用于删除程序员博客文章中的所有图片和文章,只获取高光部分(我还会对它们进行书签;我不会将浏览作为阅读的替代方案)。

javascript:(function(){ [].slice.call(document.querySelectorAll('img, .gist')).forEach(function(elem) { elem.remove(); }); })()

您会注意到,大多数代码并不复杂;实际上,有些代码非常简单。因为这些主要是我个人用的,简单就行了。如果我把这些放在要点中,其他人可以分叉并更新它们,我们可能会有更好的书签。

使用加载项在整个web上进行持久更改。

我们大多数不是网页设计师的人不想要多个浏览器的麻烦。我们也不希望我们的链接被JavaScript片段弄得乱七八糟。我要说的是,我不是在写你自己的插件,而是用现有的插件来增强你的网络体验。

问题

当我第一次开始使用Reddit和Imgur我发现他们的画廊编辑很困难。我本可以停止使用这些工具,但是我需要找到另一个在线服务并上传我的媒体。而且,我可能会忘记并返回Imgu,并且无法浏览我自己的内容。我的解决方案是在控制台和页面检查器中四处游玩,看看我是否能从他们的服务中得到我想要的东西。

使用JavaScript破解web

右击,然后单击“检查元素”,立即查看网页的结构。

大约五分钟后,我注意到大图片和小缩略图之间的细微差别。我需要更大的图片,这样我就可以看到我在拖什么,并建立一些叙事顺序。


我想出的代码比较简单,只有七行。重点不是写最少的代码,甚至是最干净的代码,而是简单地完成任务:开火忘记!

(function(jQuery) {
 jQuery('.sortable-image img, .sortable-image').css({width:'auto',height:'auto'})
 jQuery('.sortable-image img').each( function(e,elem) {
 var fixedImg = jQuery(this).attr('src').replace('s.png','.png');
 jQuery(this).attr( 'src', fixedImg );
 });
})(jQuery);

首先,我告诉网页删除高度和宽度限制,然后循环遍历每个可排序的图像,并替换部分文件名。它不是最干净的代码;它依赖于Imgu的DOM结构保持不变,并拥有jQuery库,但是它的思想是获得所需的东西,这样您就可以继续了。而且,它比向开发团队发送电子邮件以更改每个人的体验要有效得多,因为您发现它很难使用。

我对此使用了一个外接程序,据我所知,它并不是严格意义上的OpenSource(尽管如果您能够找到ChromiumUser-profile文件夹,您确实可以访问代码)[用户JavaScript和CSS]但是它允许您做您想做的事情,甚至可以实现脚本在特定URL或URL模式上运行的规则。

(请注意,Imgu不再使用相同的DOM,因此上面的代码不再工作了。对于您以这种方式发布的大部分代码来说,这是正确的,并且将继续如此。它不是为建立一个帝国而设计的,只是为了让你的生活变得单调乏味。

创作加载项

我想要讨论的最后一个主题是如何创建您自己的附加组件。我将重点关注ChromiumAd-ons,因为我对这些插件有最丰富的经验,但是您可以在Web上找到Firefox和其他支持浏览器的链接。

您还可能想要做一些雄心勃勃的事情,比如向所有页面添加键盘快捷键,其中包含前面的链接或屏蔽网络上特定的仇恨言论。您可以通过为Web使用或创作附加组件来完成此操作(如果浏览器允许)。

首先,您需要一个文件夹来存放您的文件。

mkdir -p ~/projects/addon-name

一旦您有了放置文件的位置,打开您最喜欢的编辑器并创建两个文件:manifest.json和content.js(第二个文件是特定于JS加载项的,它只是我为基于内容的JS使用的命名约定)。

Manifest.json

这个文件的代码是任何铬添加的最重要的部分.它基本上指导插件的工作方式和时间。创建这些专业不属于本文的范围,正如本文所做的那样。创建Firefox扩展

{ "manifest_version": 2, "name": "Whatever you want to call the plugin", "description": "A brief description of what the plugin does. I prefer the GNU philosophy of do one thing well", "version": "2.0", "content_scripts": [ { "matches": [ "*://*/*" ], "js": [ "content.js" ], "run_at": "document_end" } ] }

这只是告诉浏览器在读取所有方案(http:、https:等)的每个网页时,在所有路径上运行content.js。

Content.js

你在你的content.js与您在网页上放置的任何代码相同。为了浏览图库,我使用了我的朋友Barry生成的一段代码,它使用了一个名为相册速递(它是为Windows 7编写的)的旧软件。

document.addEventListener('keyup', function(k) { switch(k.code) { case "ArrowRight": document.querySelector('.nav.controls .link.next').click(); break; case "ArrowUp": document.querySelector('.nav.controls .link.up').click(); break; case "ArrowLeft": document.querySelector('.nav.controls .link.prev').click(); // window.history.back(); // The software Barry uses actually doesn't think to generate "prev" links, so we have to be creative break; default: console.log("Key Pressed:", k); } });

从这里:

导航到chrome://extensions/在你的浏览器里

使用JavaScript破解web

加载解压扩展按钮铬。

导航到保存扩展的文件夹

最后,单击“打开”。

使用JavaScript破解web

浏览铬扩展名文件的路径。

包起来

我希望您喜欢阅读这篇文章,并且它帮助您在不为每个人更改代码的情况下处理软件项目。如果您只是进入JavaScript,在构建您自己的体验之前进行实验,这将帮助您了解哪些模式和方法最适合您。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
纯JAVASCRIPT图表动画插件Highcharts Examples
Apr 16 Javascript
jQuery EasyUI API 中文文档 - Form表单
Oct 06 Javascript
js拆分字符串并将分割的数据放到数组中的方法
May 06 Javascript
在JS方法中返回多个值的方法汇总
May 20 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
Jan 19 Javascript
利用angular、react和vue实现相同的面试题组件
Feb 19 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
Mar 02 Javascript
vue实现提示保存后退出的方法
Mar 15 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 jQuery
vue自动路由-单页面项目(非build时构建)
Apr 30 Javascript
vue.js+element 默认提示中英文操作
Nov 11 Javascript
JS实现页面炫酷的时钟特效示例
Aug 14 Javascript
详解node字体压缩插件font-spider的用法
Sep 28 #Javascript
JS canvas绘制五子棋的棋盘
May 28 #Javascript
在vue中解决提示警告 for循环报错的方法
Sep 28 #Javascript
H5+C3+JS实现五子棋游戏(AI篇)
May 28 #Javascript
解决微信小程序防止无法回到主页的问题
Sep 28 #Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
Sep 28 #Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
May 28 #Javascript
You might like
写出高质量的PHP程序
2012/02/04 PHP
php之CodeIgniter学习笔记
2013/06/17 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
Python下singleton模式的实现方法
2014/07/16 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
解决python 输出是省略号的问题
2018/04/19 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
Python中collections模块的基本使用教程
2018/12/07 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
俄罗斯三星品牌商店:GalaxyStore
2020/11/04 全球购物
打造完美自荐信
2014/01/24 职场文书
四个太阳教学反思
2014/02/01 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
无保留意见审计报告
2015/06/05 职场文书
房产遗嘱范本
2015/08/06 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
Golang并发工具Singleflight
2022/05/06 Golang
VUE递归树形实现多级列表
2022/07/15 Vue.js