From 85fbc4318e99cb6a6ef09005f35247f44b0237a0 Mon Sep 17 00:00:00 2001 From: Prateek Rungta Date: Fri, 26 Oct 2018 19:42:57 +0530 Subject: [PATCH 1/4] Fix multibye unicode support Use escape() to percentage encode the final reconstructed string to percentage encode the string's bytes, and then decodeURIComponent() to properly handle unicode characters (as explained in https://blog.jse.li/posts/cloudflare-scrape-shield/). --- StandalonePHPEnkoder.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/StandalonePHPEnkoder.php b/StandalonePHPEnkoder.php index f4646cb..53f23d3 100644 --- a/StandalonePHPEnkoder.php +++ b/StandalonePHPEnkoder.php @@ -201,9 +201,10 @@ public function enkode($content, $text = NULL) { // Our base case -- we'll eventually evaluate this code. // Note that we're using innerHTML() since document.write() fails on // pages loaded using AJAX. - $kode = "document.getElementById('ENKODER_ID').outerHTML=\"" . + // Use escape() + decodeURIComponent() to preserve multibyte unicode + $kode = "document.getElementById('ENKODER_ID').outerHTML=decodeURIComponent(escape(\"" . addcslashes($content,"\\\'\"&\n\r<>") . - "\";"; + "\"));"; $max_length = max($max_length, strlen($kode) + $this->min_length + 1); From ebc3365df9a4576f015a891e86a82205d7479650 Mon Sep 17 00:00:00 2001 From: Prateek Rungta Date: Tue, 20 Nov 2018 17:18:37 +0530 Subject: [PATCH 2/4] Add script not null check Fix `TypeError: Cannot read property 'parentNode' of null` bug --- StandalonePHPEnkoder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/StandalonePHPEnkoder.php b/StandalonePHPEnkoder.php index 53f23d3..454b21c 100644 --- a/StandalonePHPEnkoder.php +++ b/StandalonePHPEnkoder.php @@ -266,7 +266,7 @@ private function enkBuildJS($kode, $text = NULL) { $msg EOT;