Hi everyone =)
Has become necessary to check the list of servers for pbbans, ggc, metabans and so on. Here, has already been written via greasemonkey by man - nickname is bigt. But there was a problem with the validation server port - it wasn't, but was set to static. But I modified some features and have completed the testing ports via Ajax (jQuery).
Screenshoot:
Advantages:
- Good news for permanent banned players by Punk Buster and other anti-cheat bullshits;
- Now you can connect with your ban to non-streaming servers.
Disadvantages:
- Page needs longer time for loading content and <Iframe> tags for forms of server list;
- Page speed also depends on the data source (pbbans.com, ggc-stream.com, etc.)
Install:
1. Install Greasemonkey (Firefox) or Tampermonkey (Chrome) - you can find them in Extensions of browsers. Be sure to restart browser;
2. Save the sourcecode in any TextEditor as a name.user.js - where name any name of file. Be sure file must be marked as JavaScript file;
3. Open browser and Extensions tab -> drag&drop your saved JS file to the browser;
4. Browser can ask you about installing this script, say "Yes\Ok".
Notes about installing:
- Do only so, because i used "@require" statement in JS file, which includes jQuery liblary;
- If you'll try create script through Greasemonkey\Tampermonkey there is no fields about it, there only fileds about namespace, description, exclude\include, thats why...
- If you know another way - Ok do, but i don't know works or not.
Using:
- Go to Battlelog, open server list\favorites, enable Greasemonkey\Tampermonkey and Script, if you disabled;
- Refresh page (F5), if you'll change filter parameters or redirect to somewhere (I didn't do automatic refresh via ajax frames, when drawing, so that they may disappear when you select a server. Handling is very long, and GGC website has atnispam protection against frequent filling the fields when checking server.)
Icons:
red - streaming
green - non-streaming
black (ERR) - something wrong with response or host (Pbbans Dead? xD)
Notes about code:
- Only tested on latest Browsers and Greasemonkey\Tampermonkey;
- If you load more servers, it can take up to two seconds (for pbbans - more) to start loading the little boxes;
- If something wrong, try to enable\disable Greasemonkey\Tampermonkey and script;
- Feel free to improve and please share your improvements with the community;
- If someone has more experience in JS\Ajax and wants to add/edit something I look forward to fresh code =)
P.S. - Maybe, if someone has a small regular Ajax functions or something about "How to do all of this in ajax", feel free - post here and have a nice day =)
PBB - Greasemonkey (Firefox):
Code:
// ==UserScript==
// @name BF3 Check PBB
// @namespace flupa flupa xD
// @description Checking streaming servers for PBB (MBi)
// @include https://battlelog.battlefield.com/*
// @include https://www.pbbans.com/msi.php*
// @include about:blank#CheckPBB*
// @require https://code.jquery.com/jquery-1.8.1.min.js
// @version 1
// ==/UserScript==
var putIFrameInDiv = 6;
(function(){
GM_registerMenuCommand("Check PBB", loadFunct);
unsafeWindow.onload = function(){
setTimeout(loadFunct, 100);
}
})();
function loadFunct(){
var currentStep = getCurrentStep();
switch (currentStep) {
case "":
if (
window.location.href.search("bf3/servers") != -1 &&
window.location.href.search("bf3/servers/show/") == -1
)
{ putInIframes(); }
break;
case "B":
var find_off = document.body.innerHTML.search("</span> was not found</b></td>");
var find_on = document.body.innerHTML.search("Server is streaming to PBBans");
if (find_off > -1){
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#00FF00;font-weight:bold;font-family:Arial;font-size:9px;\">PBB</div>";
} else if (find_on > -1){
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#FF0000;font-weight:bold;font-family:Arial;font-size:9px;\">PBB</div>";
} else {
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#000000;font-weight:bold;font-family:Arial;font-size:9px;\">ERR</div>";
}
break;
case "C":
POSTForm(getServerIP());
break;
default:
alert("WAT DO? \"" + currentStep + "\"");
}
}
function getServerIP(){
var getIP = window.location.href;
var findyVar = getIP.search("CheckPBB") + 9;
getIP = getIP.substr(findyVar, 50);
//window.alert(getIP);
return getIP;
}
function putInIframes(){
var servers = document.getElementsByClassName("serverguide-bodycells");
var forms = document.getElementsByClassName("serverguide-join-server base-no-ajax");
for (var Itr in servers){
if (servers[Itr].getElementsByTagName("div")[putIFrameInDiv].getElementsByTagName("iframe").length < 1){
url = forms[Itr].getAttribute("action");
var port;
$.ajax({
async: false,
url: "https://battlelog.battlefield.com" + url,
success: function(data) {
port = $(data).find('input[name="gameport"]').val();
}
});
servers[Itr].getElementsByTagName("div")[putIFrameInDiv].innerHTML += "<iframe width=\"20\" height=\"13\" style=\"float:right;position:relative; top:0px;right:85px;\" src=\"about:blank#CheckPBB:" + servers[Itr].getAttribute("ip") + ":" + port + "\" scrolling=\"no\"></iframe>";
}
}
setTimeout(putInIframes, 2000);
}
function PostFunct (postvars) {
var myForm = document.createElement("form");
myForm.method = "post";
myForm.action = "https://www.pbbans.com/msi.php#B";
for (var j in postvars) {
var myInput = document.createElement("input");
myInput.setAttribute("name", j);
myInput.setAttribute("value", postvars[j]);
myForm.appendChild(myInput);
}
document.body.appendChild(myForm);
myForm.submit();
document.body.removeChild(myForm);
}
function POSTForm(serverIP){
PostFunct(
{
searchdata:serverIP,
action:'1'
}
);
}
function getCurrentStep(){
var poundLoc = window.location.href.search("#");
if( poundLoc == -1 ){
return "";
} else {
return window.location.href.substr(poundLoc + 1, 1);
}
}
PBB - Tampermonkey (Chrome):
Code:
// ==UserScript==
// @name BF3 Check PBB
// @namespace flupa flupa xD
// @description Checking streaming servers for PBB (MBi)
// @match https://battlelog.battlefield.com/*
// @match https://www.pbbans.com/msi.php*
// @match https://localhost/#CheckPBB*
// @require https://code.jquery.com/jquery-1.8.1.min.js
// @version 1
// @copyright 2012+, cjdenton
// ==/UserScript==
var putIFrameInDiv = 6;
(function(){
if (window.location.href.search("localhost") != -1 ){
loadFunct();
}
GM_registerMenuCommand("Check PBB", loadFunct);
unsafeWindow.onload = function(){
setTimeout(loadFunct, 100);
}
})();
function loadFunct(){
var currentStep = getCurrentStep();
switch (currentStep) {
case "":
if (
window.location.href.search("bf3/servers") != -1 &&
window.location.href.search("bf3/servers/show/") == -1
)
{ putInIframes(); }
break;
case "B":
var find_off = document.body.innerHTML.search("</span> was not found</b></td>");
var find_on = document.body.innerHTML.search("Server is streaming to PBBans");
if (find_off > -1){
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#00FF00;font-weight:bold;font-family:Arial;font-size:9px;\">PBB</div>";
} else if (find_on > -1){
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#FF0000;font-weight:bold;font-family:Arial;font-size:9px;\">PBB</div>";
} else {
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#000000;font-weight:bold;font-family:Arial;font-size:9px;\">ERR</div>";
}
break;
case "C":
POSTForm(getServerIP());
break;
default:
alert("WAT DO? \"" + currentStep + "\"");
}
}
function getServerIP(){
var getIP = window.location.href;
var findyVar = getIP.search("CheckPBB") + 9;
getIP = getIP.substr(findyVar, 50);
//window.alert(getIP);
return getIP;
}
function putInIframes(){
var servers = document.getElementsByClassName("serverguide-bodycells");
var forms = document.getElementsByClassName("serverguide-join-server base-no-ajax");
for (var Itr in servers){
if (servers[Itr].getElementsByTagName("div")[putIFrameInDiv].getElementsByTagName("iframe").length < 1){
url = forms[Itr].getAttribute("action");
var port;
$.ajax({
async: false,
url: "https://battlelog.battlefield.com" + url,
success: function(data) {
port = $(data).find('input[name="gameport"]').val();
}
});
servers[Itr].getElementsByTagName("div")[putIFrameInDiv].innerHTML += "<iframe width=\"20\" height=\"13\" style=\"float:right;position:relative; top:0px;right:85px;\" src=\"https://localhost/#CheckPBB:" + servers[Itr].getAttribute("ip") + ":" + port + "\" scrolling=\"no\"></iframe>";
}
}
setTimeout(putInIframes, 2000);
}
function PostFunct (postvars) {
var myForm = document.createElement("form");
myForm.method = "post";
myForm.action = "https://www.pbbans.com/msi.php#B";
for (var j in postvars) {
var myInput = document.createElement("input");
myInput.setAttribute("name", j);
myInput.setAttribute("value", postvars[j]);
myForm.appendChild(myInput);
}
var myInput = document.createElement("input");
myInput.setAttribute("name", "action");
myInput.setAttribute("value", "1");
myForm.appendChild(myInput);
document.body.appendChild(myForm);
myForm.submit();
}
function POSTForm(serverIP){
PostFunct(
{
searchdata:serverIP
}
);
}
function getCurrentStep(){
var poundLoc = window.location.href.search("#");
if( poundLoc == -1 ){
return "";
} else {
return window.location.href.substr(poundLoc + 1, 1);
}
}
GGC - Greasemonkey (Firefox):
Code:
// ==UserScript==
// @name BF3 Check GGC
// @namespace flupa flupa xD
// @description Checking streaming servers for GGC
// @include https://battlelog.battlefield.com/*
// @include https://www.ggc-stream.com/search/server/wwo*
// @include about:blank#CheckGGC*
// @require https://code.jquery.com/jquery-1.8.1.min.js
// @version 1
// ==/UserScript==
var putIFrameInDiv = 6;
(function(){
GM_registerMenuCommand("Check GGC", loadFunct);
unsafeWindow.onload = function(){
setTimeout(loadFunct, 100);
}
})();
function loadFunct(){
var currentStep = getCurrentStep();
switch (currentStep) {
case "":
if (
window.location.href.search("bf3/servers") != -1 &&
window.location.href.search("bf3/servers/show/") == -1
)
{ putInIframes(); }
break;
case "B":
var find_off = document.body.innerHTML.search("Serverdata not available");
var find_on = document.body.innerHTML.search("Server View");
if (find_off > -1){
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#00FF00;font-weight:bold;font-family:Arial;font-size:9px;\">GGC</div>";
} else if (find_on > -1){
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#FF0000;font-weight:bold;font-family:Arial;font-size:9px;\">GGC</div>";
} else {
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#000000;font-weight:bold;font-family:Arial;font-size:9px;\">ERR</div>";
}
break;
case "C":
POSTForm(getServerIP(), getPort());
break;
default:
alert("WAT DO? \"" + currentStep + "\"");
}
}
function getServerIP(){
var getIP = window.location.href;
var findyVar = getIP.search("CheckGGC") + 14;
getIP = getIP.substr(findyVar, 50);
window.alert(getIP);
return getIP;
}
function getPort(){
var p = window.location.href;
var findyVar = p.search("CheckGGC") + 9;
p = p.substr(findyVar, 5);
window.alert(p);
return p;
}
function putInIframes(){
var servers = document.getElementsByClassName("serverguide-bodycells");
var forms = document.getElementsByClassName("serverguide-join-server base-no-ajax");
for (var Itr in servers){
if (servers[Itr].getElementsByTagName("div")[putIFrameInDiv].getElementsByTagName("iframe").length < 1){
url = forms[Itr].getAttribute("action");
var port;
$.ajax({
async: false,
url: "https://battlelog.battlefield.com" + url,
success: function(data) {
port = $(data).find('input[name="gameport"]').val();
}
});
servers[Itr].getElementsByTagName("div")[putIFrameInDiv].innerHTML += "<iframe width=\"20\" height=\"13\" style=\"float:right;position:relative; top:0px;right:85px;\" src=\"about:blank#CheckGGC:" + port + servers[Itr].getAttribute("ip") + "\" scrolling=\"no\"></iframe>";
}
}
setTimeout(putInIframes, 2000);
}
function PostFunct (postvars) {
var myForm = document.createElement("form");
myForm.method = "post";
myForm.action = "https://www.ggc-stream.com/search/server/wwo#B";
for (var j in postvars) {
var myInput = document.createElement("input");
myInput.setAttribute("name", j);
myInput.setAttribute("value", postvars[j]);
myForm.appendChild(myInput);
}
document.body.appendChild(myForm);
myForm.submit();
document.body.removeChild(myForm);
}
function POSTForm(serverIP, port){
PostFunct(
{
server_id:'',
ip:serverIP,
port:port,
date:dateFormat(),
time:'00:00',
interval:'1'
}
);
}
function dateFormat(){
var currentTime = new Date();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
month += "";
day += "";
if (month.length < 2) month = "0" + month;
if (day.length < 2) day = "0" + day;
return year + "-" + month + "-" + day;
}
function getCurrentStep(){
var poundLoc = window.location.href.search("#");
if( poundLoc == -1 ){
return "";
} else {
return window.location.href.substr(poundLoc + 1, 1);
}
}
GGC - Tampermonkey (Chrome):
Code:
// ==UserScript==
// @name BF3 Check GGC
// @namespace flupa flupa xD
// @description Checking streaming servers for GGC
// @match https://battlelog.battlefield.com/*
// @match https://www.ggc-stream.com/search/server/wwo*
// @match https://localhost/#CheckGGC*
// @require https://code.jquery.com/jquery-1.8.1.min.js
// @version 1
// @copyright 2012+, cjdenton
// ==/UserScript==
var putIFrameInDiv = 6;
(function(){
if (window.location.href.search("localhost") != -1 ){
loadFunct();
}
GM_registerMenuCommand("Check GGC", loadFunct);
unsafeWindow.onload = function(){
setTimeout(loadFunct, 100);
}
})();
function loadFunct(){
var currentStep = getCurrentStep();
switch (currentStep) {
case "":
if (
window.location.href.search("bf3/servers") != -1 &&
window.location.href.search("bf3/servers/show/") == -1
)
{ putInIframes(); }
break;
case "B":
var find_off = document.body.innerHTML.search("Serverdata not available");
var find_on = document.body.innerHTML.search("Server View");
if (find_off > -1){
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#00FF00;font-weight:bold;font-family:Arial;font-size:9px;\">GGC</div>";
} else if (find_on > -1){
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#FF0000;font-weight:bold;font-family:Arial;font-size:9px;\">GGC</div>";
} else {
document.body.innerHTML = "<style>body{background-image:none;background-color:#ffffff;margin:0px;}</style><div style=\"color:#000000;font-weight:bold;font-family:Arial;font-size:9px;\">ERR</div>";
}
break;
case "C":
POSTForm(getServerIP(), getPort());
break;
default:
alert("WAT DO? \"" + currentStep + "\"");
}
}
function getServerIP(){
var getIP = window.location.href;
var findyVar = getIP.search("CheckGGC") + 14;
getIP = getIP.substr(findyVar, 50);
//window.alert(getIP);
return getIP;
}
function getPort(){
var p = window.location.href;
var findyVar = p.search("CheckGGC") + 9;
p = p.substr(findyVar, 5);
window.alert(p);
return p;
}
function putInIframes(){
var servers = document.getElementsByClassName("serverguide-bodycells");
var forms = document.getElementsByClassName("serverguide-join-server base-no-ajax");
for (var Itr in servers){
if (servers[Itr].getElementsByTagName("div")[putIFrameInDiv].getElementsByTagName("iframe").length < 1){
url = forms[Itr].getAttribute("action");
var port;
$.ajax({
async: false,
url: "https://battlelog.battlefield.com" + url,
success: function(data) {
port = $(data).find('input[name="gameport"]').val();
}
});
servers[Itr].getElementsByTagName("div")[putIFrameInDiv].innerHTML += "<iframe width=\"20\" height=\"13\" style=\"float:right;position:relative; top:0px;right:85px;\" src=\"https://localhost/#CheckGGC:" + port + servers[Itr].getAttribute("ip") + "\" scrolling=\"no\"></iframe>";
}
}
setTimeout(putInIframes, 2000);
}
function PostFunct (postvars) {
var myForm = document.createElement("form");
myForm.method = "post";
myForm.action = "https://www.ggc-stream.com/search/server/wwo#B";
for (var j in postvars) {
var myInput = document.createElement("input");
myInput.setAttribute("name", j);
myInput.setAttribute("value", postvars[j]);
myForm.appendChild(myInput);
}
var myInput = document.createElement("submit");
myInput.setAttribute("name", "submit");
myInput.setAttribute("value", "Send");
myForm.appendChild(myInput);
document.body.appendChild(myForm);
myForm.submit();
}
function POSTForm(serverIP, port){
PostFunct(
{
server_id:'',
ip:serverIP,
port:port,
date:dateFormat(),
time:'00:00',
interval:'1'
}
);
}
function dateFormat(){
var currentTime = new Date();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
month += "";
day += "";
if (month.length < 2) month = "0" + month;
if (day.length < 2) day = "0" + day;
return year + "-" + month + "-" + day;
}
function getCurrentStep(){
var poundLoc = window.location.href.search("#");
if( poundLoc == -1 ){
return "";
} else {
return window.location.href.substr(poundLoc + 1, 1);
}
}