2013-05-01 4 views
2

У меня есть сценарий Greasemonkey, который я хочу запутать. Мне было интересно, что не так с имеющимся "Packer" Javascript obfuscator.Obfuscated code throws error в сценарии Greasemonkey

Он сжимает скрипт, но после установки сценарий не работает. Есть ли какой-либо PHP-класс, который будет запутывать/упаковывать GM-скрипты и сохранять функциональность? Или как я могу это сделать?

Ошибка:

Timestamp: 01-05-2013 13:11:35 
Error: missing ; before statement 
Source File: file://file_path 
Line: 1 

Сценарий:

// ==UserScript== 
// @name   Test 
// @namespace  http://* 
// @description Test 
// @require   http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js 
// ==/UserScript== 

var SomeVar = "Something"; 
GM_setValue("foo","bar"); 
var AnotherVar = GM_getValue("foo"); 
alert(AnotherVar); 

Упакованный Сценарий:

eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0 3="4";5("1","6");0 2=7("1");8(2);',9,9,'var|foo|AnotherVar|SomeVar|Something|GM_setValue|bar|GM_getValue|alert'.split('|'),0,{})) 
+3

Просто собирается бросить его там - вы знаете, эти упаковщики не остановят среднекислый определенное лицо от просмотра кода, не так ли? –

+0

Любые коды ошибок в консоли? – dda

+0

Если что-то не работает, и вы решили обратиться за помощью, укажите, с какими проблемами вы столкнулись (сообщения об ошибках, соответствующая системная информация и продолжайте). –

ответ

9

На самом деле, ваш "Упакованный скрипт" отлично работает на моей тестовой странице. Вы сделали сохранить Metadata block as-is, правильно?

Кроме того, следует добавить:

// @grant GM_setValue 
// @grant GM_getValue 

к блоку метаданных (1) избегать JQuery (и других) конфликтов и (2) обеспечить, чтобы эти GM_ функций всегда включены.


Ваша проблема одна или несколько:

  1. Вы пытались упаковать или запутать блок метаданных. Вы не можете это сделать; надстройка Greasemonkey использует этот точный, прозрачный текстовый формат, чтобы определить, как обрабатывать данный скрипт.
  2. Конфликт с конкретной страницей. (Настройки @grant, должны исправить это).
  3. Что-то в вашем коде, что вы не показываете нам.
  4. Ошибка редактирования, ошибка установки или «запутанный» экземпляр Firefox.

    1. Удалить сценарий.
    2. Полностью завершение работы Firefox, убедитесь, что все задачи FF остановлены.
    3. Перезапустите FF и переустановите сценарий.
    4. the troubleshooting tips starting at "Script Errors", сверху вниз.
    5. См, также, Troubleshooting (Script Authors)
Смежные вопросы