Splash上で正規表現動かない

Splash上のLuaスクリプトで特定の標準ライブラリが動かない・・・正規表現を使うタイプのものが動かないようだ。

1
'Error happened while executing Lua script', 'info': {'source': '[string "..."]', 'line_number': 107, 'error': "attempt to call field 'gsub' (a nil value)", 'type': 'LUA_ERROR', 'message': 'Lua error: [string "..."]:107: attempt to call field \'gsub\' (a nil value)'}}

Splashの制限によるものだ

SplashのLuaサンドボックスでリソース食いのものが制限されている。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
local _string = {
byte = string.byte,
char = string.char,
find = string.find,
format = string.format,
-- gmatch = string.gmatch, -- can be CPU intensive
-- gsub = string.gsub, -- can be CPU intensive; can result in arbitrary native code execution (in 5.1)?
len = string.len,
lower = string.lower,
-- match = string.match, -- can be CPU intensive
-- rep = string.rep, -- can eat memory
reverse = string.reverse,
sub = string.sub,
upper = string.upper,
}

どうすればいい?

Splash起動時に--disable-lua-sandboxでLuaサンドボックスを無効化すればいい。