From 8328d93b17de34c255673c2b98be7eb0f828f6c5 Mon Sep 17 00:00:00 2001 From: lolcat Date: Sat, 4 Jul 2026 17:16:35 -0400 Subject: [PATCH] duckduckgo fix --- scraper/ddg.php | 110 +----------------------------------------------- 1 file changed, 2 insertions(+), 108 deletions(-) diff --git a/scraper/ddg.php b/scraper/ddg.php index d752cb8..8f68d42 100644 --- a/scraper/ddg.php +++ b/scraper/ddg.php @@ -54,8 +54,8 @@ class ddg{ $headers = ["User-Agent: " . config::USER_AGENT, "Accept: */*", - "Accept-Language: en-US,en;q=0.5", - "Accept-Encoding: gzip", + "Accept-Language: en-US,en;q=0.9", + "Accept-Encoding: gzip, deflate, br, zstd", "Referer: https://duckduckgo.com/", "DNT: 1", "Sec-GPC: 1", @@ -920,112 +920,6 @@ class ddg{ ){ throw new Exception("DuckDuckGo returned a JSA challenge"); - - // get JSA initial token - if( - !preg_match( - '/let jsa *= *([0-9]+)/', - $js, - $jsa - ) - ){ - - $jsa = 0; - }else{ - - $jsa = (int)$jsa[1]; - } - - // get function bodies - preg_match_all( - '/let *([A-Za-z0-9]+) *= *function\(.*\) *{(.*)};/sU', - $js, - $functions - ); - - $parsed_functions = []; - - for($i=0; $i "multiplication", - "num" => (int)$num[1] - ]; - continue; - } - - if( - preg_match( - '/innerHTML *= *`([^`]+)`/i', - $functions[2][$i], - $challenge - ) - ){ - - $challenge[1] = - preg_replace( - '/<\/(br)>/', - '<$1>', - $challenge[1] - ); - - $parsed_functions[$functions[1][$i]] = [ - "type" => "challenge", - "text" => $challenge[1] - ]; - } - } - - // get function call order - preg_match_all( - '/jsa *= *([A-Za-z0-9]+)\(jsa\)/i', - $js, - $call_order - ); - - foreach($call_order[1] as $order){ - - if(!isset($parsed_functions[$order])){ - - throw new Exception("JS challenge solve failure: DuckDuckGo called an unknown function"); - } - - if($parsed_functions[$order]["type"] == "multiplication"){ - - $jsa = $jsa * $parsed_functions[$order]["num"]; - continue; - } - - if($parsed_functions[$order]["type"] == "challenge"){ - - // @TODO get parsed length - //$parsed_functions[$order]["text"] - - $jsa = $jsa + strlen($parsed_functions[$order]["text"]); - } - } - - try{ - $js = $this->get( - $proxy, - "https://links.duckduckgo.com" . $challenge_url[1] . $jsa, - [], - ddg::req_xhr - ); - }catch(Exception $error){ - - throw new Exception("Failed to get challenged d.js"); - } } //