然后我们去:
我正在编写(实际上感觉更像是尝试和询问)使用JS的GreaseMonkey脚本并包括(也使用)jQuery库.
我用一些输入字段创建了另一个表.实施例(输入字段只):
+ " < input type=\" text\" id=\" field_1\" name=\" min_field_1\" value=\"\" > "
+ " < input type=\" text\" id=\" field_2\" name=\" min_field_2\" value=\"\" > "
+ " < input type=\" text\" id=\" field_3\" name=\" min_field_3\" value=\"\" > "
+ " < input type=\" text\" id=\" field_4\" name=\" min_field_4\" value=\"\" > "
//the results should be rendered in another input-field in this case with id=field_result_min
+ " < input type=\" text\" id=\" field_result_min\" name=\"min_field_result\" > "
+ …
Run Code Online (Sandbox Code Playgroud) 我已经开发了我的应用程序来使用salted SHA-512密码哈希.
如果黑客要获取哈希,我该怎么做才能防止黑客使用Greasemonkey来改变登录页面以便密码不被哈希?我预见到的攻击向量将使他们能够将他们获取的哈希值输入到密码输入中,然后Greasemonkey更改的页面按原样发送该信息(无需对输入的密码进行哈希处理,即实际哈希值).
这只是如何使用获取的哈希的一个示例.还有其他方法可以使用Greasemonkey更改站点的代码以实现相同的结果.
我想不出有什么方法可以预防/防止这种类型的攻击.
有没有人在这里拿出一些东西?
这是我想使用javascript"点击"的提交按钮.
<input type="submit" name="REG_BTN" value="Submit Changes">
Run Code Online (Sandbox Code Playgroud)
我试图使用的东西......
document.getElementsByTagName('submit')[0].click();
Run Code Online (Sandbox Code Playgroud)
"点击"按钮,但它不起作用.我正在编写一个在浏览器中运行的脚本,因此我无法更改提交按钮的任何方面.我是javascript的新手,所以它可能只是一些简单的东西,我没有接受.还有另一种方法来实现这一目标吗?
我正在运行GM_xmlhttpRequest(使用Greasemonkey脚本),并将其存储responseText到新创建的HTML元素中:
var responseHTML = document.createElement('HTML');
...
onload: function() { responseHTML.innerHTML = response.responseText; }
Run Code Online (Sandbox Code Playgroud)
然后我试图在中找到一个元素responseHTML:
console.log(responseHTML.getElementsByTagName('div'));
console.log(responseHTML.getElementById('result_0'));
Run Code Online (Sandbox Code Playgroud)
第一个工作正常,但第二个则不行。有任何想法吗?
javascript greasemonkey xmlhttprequest getelementbyid gm-xmlhttprequest
我有一个自己完成的脚本,当我访问它时,它使用jQuery Ajax函数来记录网页中的一些数据.它需要一些信息并将其发送到我的本地Apache主机以保存在文本文件中.
它工作了几个月,但我现在得到一个与此同源策略相关的错误(我知道它是如何工作的及其目的),浏览器现在正在结束显示此消息的脚本执行:
The page at https://www.website.com/ displayed insecure content from
http://127.0.0.1:8081/whatever.php
Run Code Online (Sandbox Code Playgroud)
其次是:
Refused to connect to connect 'http://127.0.0.1:8081/whatever.php?arguments=1' because it
violates the following Content Security Policy directive: "connect-src
https://www.website.com/* https://*.website.com/
https://*.website.net xhr: error: SECURITY_ERR: DOM Exception 18
Run Code Online (Sandbox Code Playgroud)
最后一个域在错误消息上显示为红色.一个奇怪的细节是,在Tampermonkey上的JavaScript代码中,我有@includes那些域而不是红色标记的域.我添加了它并进行了测试,但没有奏效.
我在谷歌上发现的每一个讨论都说明了如何禁用这个政策,但是如果你正在开发一个扩展,那不是我的情况.
这段代码只能在我的机器上运行,我没有打算以任何方式分发它,所以任何解决方案都会受到赞赏,即使解决方案是直接更改浏览器配置.
如果这个'有用,我使用的是Windows 7.
我的脚本不起作用.AJAX调用没有发生.为什么?
// ==UserScript==
// @name prova
// @namespace http://blogpagliaccio.wordpress.com/
// @description prova
// @include http://*
// @version 1
// @grant GM_xmlhttpRequest
// @require http://userscripts.org/scripts/source/85398.user.js
// ==/UserScript==
// [........... other code]
console.log('start ajax call...');
GM_xmlhttpRequest({
method: "POST",
url: "www.prova.it",
data: {parametro:parametro},
onload: function(response) {
console.log(response.responseText);
},
onerror: function(reponse) {
alert('error');
console.log(reponse);
}
});
Run Code Online (Sandbox Code Playgroud)
我在一个@grant指令中列出了API函数,但是我没有看到AJAX调用和响应.
我正在编写一个用户脚本,需要找到与另一个单词相关的单词.我找到了一个网站,我可以访问http://semantic-link.com/#/stack,并且会有一个与stack以下格式相关的单词列表:
<!-- various stuffs here, e.g. <head>, a <div>, another <div>, start of <body> -->
<div id="word0" class="word" onclick="updateTitle("stacks");" style="opacity: 1;">
stacks
</div>
<div id="word1" class="word" onclick="updateTitle("flue");" style="opacity: 1;">
flue
</div>
<div id="word2" class="word" onclick="updateTitle("popped");" style="opacity: 1;">
popped
</div>
<div id="word3" class="word" onclick="updateTitle("overflow");" style="opacity: 1;">
overflow
</div>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想stacks从该页面获取字符串.我发现的所有解决方案都不起作用,因为它们:
$.ajax(),, $.get()或$('something').load()仅限于执行它们的域.有没有什么办法可以#word0只使用JavaScript 将元素的内容作为字符串获取?或者,是否有另一种方法可以找到与另一个单词相关的单词?
这是jsFiddle的一个例子.我有两个领域.. opp3和opp4.用户可以修改opp4中的文本,但我希望当用户更改opp4中的文本时,opp3中的文本会动态更改.
我看到这个解决方案动态更改文本,但我不能完全使用它,因为我正在创建一个greasemonkey脚本(并且不能编辑html,只添加JS),我想只更改字段的一部分,而不是整个事情.
HTML:
<input id="opp3" maxlength="120" name="opp3" size="40" tabindex="1" type="text" style="cursor: auto; background-attachment: scroll; background-position: 100% 50%; background-repeat: no-repeat;" readonly>
<br><br>
<input autocomplete="off" id="opp4" maxlength="255" name="opp4" onchange="getElementByIdCS('opp4_lkid').value='';getElementByIdCS('opp4_mod').value='1';" size="40" tabindex="2" type="text">
Run Code Online (Sandbox Code Playgroud)
JS:
document.getElementById('opp3').value = "Text <VALUE FROM OPP4> More Text";
document.getElementById('opp4').value = "Field Text Here";
Run Code Online (Sandbox Code Playgroud) 我正在使用Greasemonkey / Tampermonkey来访问页面,并根据当前页面的内容对100个元素的表进行更改。
短期存储和数组操作可以正常工作,但是我想永久存储数据。我已经试过GM_getValue/ GM_setValue,GM_SuperValue,localStorage,和indexedDB,但我清楚地失去了一些东西根本。
似乎没有什么可以让我将数组写入永久存储,然后再将其读回到变量中,以便我可以访问每个元素,因此variablename[32]实际上是表中的第32个元素(嗯,如果从零开始计数,则为第33个元素,我做)。
脚本运行时,我需要访问整个100个元素的表,因为我需要在页面本身上输出其中的部分或全部。在最基本的情况下,我有一个for循环,该循环从0到99,输出variablename[i]每次的值。
我对任何方法都没有倾向,我只想让Grickasemonkey / Tampermonkey脚本中的frickin工作。
在脚本顶部,我有这个:
for (var i = 0; i <= 99; i++) {
currentData[i] = localStorage.getItem(currentData[i]);
}
Run Code Online (Sandbox Code Playgroud)
上一节的目的是将100个条目读入currentData数组。现在这实际上对我不起作用,可能是因为我一开始没有正确存储东西。
在中间,在修改了其中一个元素之后,我想通过执行以下操作来替换它:
localStorage.setItem(
currentData[specificElementToChange], differentStuff);
Run Code Online (Sandbox Code Playgroud)
上面的目的是更改100行数据之一并将其永久存储,因此,下次读取顶部的代码时,它将拉出所有100个条目,而上一行更改了一个元素。
这是一般原则。
由于Firefox / Chrome的某些安全性问题,或者由于要执行的操作(在每次访问给定页面时将数组永久存储在一个元素上而永久更改),我无法确定我的操作是否无效不可能。
使用该variable[element]格式访问数组很重要,但除此之外,我可以用任何方式存储此数据并简单地检索它。
我有这个用户脚本 (在Stack Overflow的帮助下写的)用于网站metal-archives.com.
它的结构是这样的:
function appendColumn(...) {
// code for appending column
// code for making the table sortable
}
waitForKeyElements ("table", appendColumn);
Run Code Online (Sandbox Code Playgroud)
当您切换子标签(表格)时,脚本可以正常工作,除了视觉故障/延迟.
切换时,额外(第6列)最初显示为预期.但是,表格会以原始形式暂时显示,然后最终显示第6列.
要查看此内容,请安装脚本,访问此典型目标页面,然后切换子选项卡(完成唱片,主要,生命,演示,杂项等).
它看起来像这样:
我试图通过添加以下内容来显示初始表:
GM_addStyle(".display.discog {display: none;} ");
Run Code Online (Sandbox Code Playgroud)
到和的开头appendColumn():
GM_addStyle(".display.discog {display: inline !important;} ");
Run Code Online (Sandbox Code Playgroud)
到了最后appendColumn().
但它没有任何区别.
我在该页面上使用了Firefox网络监视器,当你切换标签时似乎:
如何更改代码(使用waitForKeyElements时)以防止显示关键元素,并仅在我的代码修改后显示它?
或者我如何加快响应速度?
谢谢.
greasemonkey ×10
javascript ×10
jquery ×4
ajax ×2
html ×2
tampermonkey ×2
arrays ×1
css ×1
forms ×1
http-post ×1
security ×1
sha ×1
submit ×1