我正在度假,我酒店的网络连接价格很疯狂。
网络流量被阻止,直到使用http post请求向http://an.internal.address/login发送有效的用户名/密码对。
但是,它们可以让用户通过访问http://an.internal.address/logout
来关闭连接我希望通过使用Greasemonkey自动执行以下操作来最大化我的1小时网络票的持续时间:
我使用的是Firefox 30,我认为Greasemonkey实际上可以做到这一点。但是,我是第一次尝试编写用户脚本:它部分工作。
似乎根本没有调用login(),并且logout不执行GM_xmlhttpRequest,因为没有发出包含响应的alert()。
// ==UserScript==
// @name test
// @namespace leonixyz
// @version 0.1
// @description Calls shell script once a page has been loaded or leaved
// @match http://*/*
// @match https://*/*
// @copyright leonixyz
// ==/UserScript==
function login() {
GM_xmlhttpRequest({
method: "POST",
url: "http://1.1.1.1/login",
data: "username=DE14945&password=VBJEETYN&dst=&popup=true",
onload: function(response) {
alert(response.responseText);
}
});
}
function logout() {
GM_xmlhttpRequest({
method: "GET",
url: "http://1.1.1.1/logout",
onload: function(response) {
alert(response.responseText);
}
});
}
window.addEventListener("unload", login);
window.addEventListener("load", logout);
答案 0 :(得分:0)
解决:所有GM_functions()都需要在@grant元标记之后声明到标题中。 如果您计划在克罗地亚波雷奇附近的Hotel Delfin酒店度假,请在接待处购买1小时的网络票,并享受以下脚本(有时您需要手动连接,特别是在打开新标签时,但断开连接是有效的并节省宝贵的连接时间):
// ==UserScript==
// @name Laguna Wifi hack
// @namespace leonixyz
// @version 0.1
// @description connect/disconnect automatically when browsing
// @match http://*/*
// @match https://*/*
// @exclude http://1.1.1.1/*
// @copyright leonixyz
// @grant GM_xmlhttpRequest
// ==/UserScript==
function login() {
GM_xmlhttpRequest({
method: "POST",
url: "http://1.1.1.1/login",
data: "username=MY_USERNAME&password=MY_PASSOWRD"
});
}
function logout() {
GM_xmlhttpRequest({
method: "GET",
url: "http://1.1.1.1/logout"
});
}
window.addEventListener("beforeunload", login);
window.addEventListener("load", logout);