`
weiqingfei
  • 浏览: 318112 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论

JS注入

阅读更多

有些时候希望对于一个常光顾的页面进行一些自动化处理。

对于一些可以写插件的浏览器来说,直接写插件可能会比较简单。

但是并不是所有的浏览器都支持插件,另外插件也不可以在不同的浏览器间共用。

这时候,js注入会是个还比较简单的办法。

 

既然是js注入,自然就是要在浏览器正在浏览的页面上添加一段js了。

一般这个用bookmark一个链接来实现

比如

javascript:(function(){alert(%27hello,world!%27);})();

 

但是每个浏览器都对可注入的js长度有一定的限制,并且要进行html转码。

所以代码比较长的话,不大可能把所有的逻辑都写在这个链接里。

最好的方法,就是动态调用服务器端的一段儿js代码(由于无法load本地的js,所以要搭建一个简单的web服务器)。

bookmark的实现

if(window.location.href.indexOf('www.iteye.com')>=0){
if(!window.pcschecker){
var uId='pcs_bk';
var st=document.getElementById(uId);
if(st){st.parentNode.removeChild(st);}
st=document.createElement('script');
st.src='http://localhost:8888/js?'+Math.random();
st.setAttribute('id',uId);
document.getElementsByTagName('head')[0].appendChild(st);
}else{window.pcschecker.check();}
}else{alert('Only for PCS.')}

 转码后,附带一个转码网站 http://mcdlr.com/js-inject/

javascript:(function(){if(window.location.href.indexOf(%27www.iteye.com%27)>=0){ if(!window.pcschecker){ var uId=%27pcs_bk%27; var st=document.getElementById(uId); if(st){st.parentNode.removeChild(st);} st=document.createElement(%27script%27); st.src=%27http://localhost:8888/js?%27+Math.random(); st.setAttribute(%27id%27,uId); document.getElementsByTagName(%27head%27)[0].appendChild(st); }else{window.pcschecker.check();} }else{alert(%27Only for PCS.%27)}})();

 当网站是www.iteye.com并且是第一次使用时才会调入js

后台js文件

(function(w){
    var pcschecker = {};
    pcschecker.$=function(id){
    	return document.getElementById(id);
    }
    pcschecker.check = function(){
        alert("hello,world!");
    }
    w.pcschecker = pcschecker;
    pcschecker.check();
})(window);

 

附带一段简单的java的httpserver代码,由于使用了sun的实现,所以并不是所有的jdk都可以用。

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.util.concurrent.Executors;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class SimpleServer {

	public static void main(String[] args) throws IOException {
		HttpServer httpServer = HttpServer.create(new InetSocketAddress(8888), 0);
		httpServer.setExecutor(Executors.newCachedThreadPool());
		httpServer.createContext("/js", new HttpHandler() {
			
			@Override
			public void handle(HttpExchange httpExchange) throws IOException {
				InputStream fis = SimpleServer.class.getResourceAsStream("check.js");
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				byte[] buf = new byte[1024];
				for (int readNum; (readNum = fis.read(buf)) != -1;) {
					baos.write(buf, 0, readNum);
				}
				fis.close();
				byte[] bytes = baos.toByteArray();
				httpExchange.sendResponseHeaders(200, bytes.length);
				OutputStream os = httpExchange.getResponseBody();
				os.write(bytes);
				os.close();
			}
		});
		httpServer.start();
		System.out.println("HttpServer Start!");
	}

}

 

分享到:
评论

相关推荐

    iOS中JS注入例子

    在iOS开发中,JavaScript注入是一种常见的技术,它允许我们在原生应用中与Web视图(如UIWebView或WKWebView)中的JavaScript代码进行交互。这种方式能够实现原生功能与网页内容的深度整合,提升用户体验,或者在某些...

    chrome插件js注入网页demo

    而JavaScript注入则涉及到如何利用Chrome插件API,特别是`content_scripts`配置,将JS代码注入到匹配规则的网页中运行。 **详细知识点:** 1. **Chrome扩展结构**:一个典型的Chrome插件包括manifest.json文件、...

    Android端的Js注入

    (@Deprecated-推荐使用crosswalk-js-inject)用于Android端的Js注入,从safe-java-js-webview-bridge改进而来,能够在java与js端间相互动态传递函数。

    网页js脚本注入,可执行任意代码。

    网页JS脚本注入,突破网页本地脚本验证方法实例 JS脚本注入是一种常见的网页攻击手法,通过注入恶意脚本来控制网页的行为。在这个实例中,我们将展示如何使用JS脚本注入来突破网页本地脚本验证方法,跳过验证码,并...

    h5页面注入js代码

    首先,我们要理解JavaScript注入的两种主要方式:动态注入和静态注入。静态注入通常是在HTML文件中直接写入`<script>`标签,而动态注入则可能在页面加载后通过DOM操作或AJAX请求来添加脚本。 1. 静态注入: 在HTML...

    纯JS注入 右下角悬浮

    纯JS注入 悬浮 固定 浮窗 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <title>JS右下角悬浮广告代码 ;charset=gb2312"> ...

    通过Javascript注入实施的PDF攻击.pdf

    "通过Javascript注入实施的PDF攻击" 本文将围绕PDF攻击的安全问题进行讨论,具体涉及到Javascript注入实施的PDF攻击、苹果电脑的攻击、Wordpress的Java Script注入攻击、MD5哈希被破解等方面。 首先,让我们来讨论...

    android webview 图片上传 4.4解决方案 防js注入webview

    Android Webview upload 图片上传 ! 导读: ...扩充 webview 防止js注入 解决 android webview 在4.4系统上无法使用情况 博客地址 : http://blog.csdn.net/aaawqqq/article/details/51087805

    js注入 黑客之路必备!

    JS注入,即JavaScript注入,是一种常见的网络攻击手段。攻击者通过向网站输入恶意的JavaScript代码,当这段代码被其他用户加载并执行时,就可以执行攻击者预设的恶意操作。这不仅涉及到网站的前端安全问题,还关系到...

    必知必会——selenuim_pyppeteer模拟登陆防检测破解(非js注入那种,js注入现在也不能有效解决,而本文能够帮助你有效解决这个问题)

    对于使用模拟登陆等操作来...但是本文,提到的设置内容能够有效根治网上的一大堆无效的js注入教程,本文详细讲解,通过如何设置,来达到仿被检测的问题,一次阅读终生受益,再也不为使用模拟登陆被限制的问题而头疼。

    通过书签来注入JS

    标题“通过书签来注入JS”涉及到的是网页开发中的一个技术细节,主要集中在JavaScript的动态注入和书签的利用上。书签在浏览器中通常用于快速访问常用的网站,但这里提到的是利用书签来实现JavaScript代码的注入,这...

    Uipath注入JS

    Uipath注入JS

    servlet过滤器Api 以及乱码处理.javascript注入问题

    在这个主题中,我们将深入探讨Servlet过滤器的API用法、乱码处理策略以及如何防止JavaScript注入问题。 首先,让我们了解一下Servlet过滤器的基础。在Servlet规范中,`Filter`接口定义了过滤器的核心方法,如`...

    什么是JavaScript注入攻击?

    JavaScript注入攻击是一种网络安全威胁,攻击者通过注入恶意的JavaScript代码到受信任的网站中,当其他用户访问该网站时,恶意代码将被执行,可能导致用户信息泄露、网站内容被篡改等后果。这种攻击方式常见于接受...

    C#+WPF+CEF网站内容采集工具/JS注入控制/HTML内容解析/图片超链接地址过滤/内容导出

    对应网页动态部分或涉及Iframe框架嵌入,涉及Ueditor等,无法通过XPath路径采集的,则通过Js注入,实现Js调用C#函数,实现内容的完整采集。采集完成后支持可以导出Excel或Xml。本程序适合各种网页内容采集、分析、...

    右下角悬浮(纯js注入 IE6 7 8 360 火狐 浏览器兼容)

    右下角悬浮(纯js注入,无需提前写CSS样式) 经过几次修改,支持各大浏览器和IE6等老版本浏览器。

    web-injection:Chrome扩展程序可将自定义JavaScript注入每个页面

    在这个场景中,"Chrome扩展程序可将自定义JavaScript注入每个页面"指的是开发者可以利用Chrome浏览器的扩展开发机制,创建插件并在用户浏览网页时自动在页面上下文中执行自定义的JavaScript代码,实现各种定制化需求...

    JavaScript注入漏洞的原理及防范(详解)

    JavaScript注入漏洞是一种常见的网络应用安全问题,它允许攻击者通过Web应用程序在用户浏览器中执行恶意脚本代码。本文将深入探讨JavaScript注入漏洞的原理,并提供相应的防范措施。 ### JavaScript注入漏洞的原理 ...

    PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例

    应同学邀请,演示如何使用 PyQt5 内嵌浏览器浏览网页,并注入 Javascript 脚本实现自动化操作。 下面测试的是一个廉价机票预订网站(http://www.flyscoot.com/),关键点如下 使用 QWebEngineView 加载网页,并显示...

    浅谈html转义及防止javascript注入攻击的方法

    防止JavaScript注入攻击的关键在于正确处理用户输入的数据。以下是一些预防策略: 1. **HTML转义**:如上所述,对用户输入的数据进行HTML转义是最基本的防御手段,可以防止浏览器将它们解释为JavaScript代码。 2. ...

Global site tag (gtag.js) - Google Analytics