问题
I have a Greasemonkey script that I want to be obfuscated. I was wondering what goes wrong with the available "Packer" Javascript obfuscator.
It compresses the script fine but after installation, the script doesn't work. Is there any PHP Class that would obfuscate/pack GM scripts and retain functionality? Or how do I go about doing this?
Error:
Timestamp: 01-05-2013 13:11:35
Error: missing ; before statement
Source File: file://file_path
Line: 1
Script:
// ==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);
Packed Script:
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,{}))
回答1:
Actually, your "Packed Script" works fine on my test page. You did keep the Metadata block as-is, right?
Also, you should add:
// @grant GM_setValue
// @grant GM_getValue
to the metadata block to (1) avoid jQuery (and other) conflicts and (2) ensure that those GM_
functions are always switched on.
Your problem is one or more of:
- You tried to pack or obfuscate the Metadata block. You cannot do this; the Greasemonkey add-on uses this precise, clear-text format to determine how to handle a given script.
- A conflict with a specific page. (The
@grant
settings, should fix that). - Something in your code that you are not showing us.
An edit error, installation error, or "confused" instance of Firefox.
- Uninstall the script.
- Completely shutdown Firefox, make sure all FF tasks have stopped.
- Restart FF and reinstall the script.
- Follow the troubleshooting tips starting at "Script Errors", on down.
- See, also, Troubleshooting (Script Authors)
来源:https://stackoverflow.com/questions/16314367/obfuscated-code-throws-error-in-a-greasemonkey-script