Pull to refresh

ГОСТы по GreaseMonkey'вски

Reading time2 min
Views2.6K
Подошла недавно коллега и поведала, что никак у нее не получается сохранить страничку ГОСТа с нелюбимого сайта http://protect.gost.ru.
«Нам ли быть в печали, старушка» — сказал я ей, открыл вышеупомянутый сайт и начал ковырять смотреть.

Выяснилось, что алгоритм «защиты» достаточно прост — картинка со станицей ГОСТа накладывается css-стилем на прозрачную картинку pixel.gif. В результате при попытке сохранения картинки через «Сохранить изображение как..» в Firefox мы сохраняем не нужную нам страничку ГОСТа, а pixel.gif.
«Лень — двигатель прогресса» — подумал я и накидал небольшой скриптик для GreaseMonkey, которым и делюсь с хабрачитателями.
// ==UserScript==
// @name           GostRu
// @namespace      http://protect.gost.ru/*
// @description    Delete pixel image under Gost
// @include        http://protect.gost.ru/*
// ==/UserScript==
var s_l=document.styleSheets.length;
for (j=0;j<s_l;j++) {
    var st=document.styleSheets[j].cssRules,
        st_l=st.length;
    for (i=0;i<st_l;i++) {
        if (st[i].selectorText==='.face') {
            im=st[i].style.backgroundImage;
            break;
        }
    }
}
im=im.split('"')[1];
if (im!=='') {
	var img=document.getElementsByTagName('img'),
	    img_l=img.length;
	for (i=0;i<img_l;i++) {
	    if (img[i].className==='face') {
		img[i].src=im;
	    }
	}
}

После установки скрипта мы получаем возможность сохранять именно нужную нам страницу.
Прекрасно работает в Firefox 3.6.3 + GreaseMonkey 0.8.20100408.6

Хабрапользователь nanodust подсказал уже существующий скрипт с аналогичным функционалом на UserScript.org (прошу прощения за укорот ссылки, не хватает опыта для «обмана» хабрапарсера).

Хабрапользователь david_mz написал букмарклет для разворачивания ГОСТов:
«рабочая» версия:
javascript:(function() { var ids = []; for(var i=0;i<document.links.length;i++) { var a = document.links[i]; if (a.href.indexOf('&pageK=') < 0 || !a.firstChild) continue; ids.push(a.href.substr(a.href.indexOf('pageK=') + 6, 36)); } document.open(); document.write('<html><body></body></html>'); document.close(); for(var i=0;i<ids.length;i++) { var img = document.createElement('img'); img.src="image.ashx?page="+ids[i]; document.body.appendChild(img); } })();


«читабельная» версия:
javascript:(
	function() {
		var ids = [];
		for(var i=0;i<document.links.length;i++) {
			var a = document.links[i];
			if (a.href.indexOf('&pageK=') < 0 || !a.firstChild) continue;
			ids.push(a.href.substr(a.href.indexOf('pageK=') + 6, 36));
		}
		document.open();
		document.write('<html><body></body></html>');
		document.close();
		for(var i=0;i<ids.length;i++) {
			var img = document.createElement('img');
			img.src="image.ashx?page="+ids[i];
			document.body.appendChild(img);
		}
	}
)();

Способ применения: для реальной работы необходимо взять кусок букмарклета в «рабочем» виде и сделать в браузере закладку, у которой вместо URL — этот код. Потом зайти на любую страницу нужного ГОСТ (именно на страницу, а не на аннотацию) и нажать на закладку. Появятся все страницы данного ГОСТ в виде картинок без всякой защиты.
Tags:
Hubs:
Total votes 68: ↑52 and ↓16+36
Comments54

Articles