[fix] engine: duckduckgo - don't quote query string
The query string send to DDG must not be qouted. The query string was URL-qouted in #4011, but the URL-qouted query string result in unexpected *URL decoded* and other garbish results as reported in #4019 and #4020. To test compare the results of a query like:: !ddg Häuser und Straßen :de !ddg Häuser und Straßen :all !ddg 房屋和街道 :all !ddg 房屋和街道 :zh Closed: - [#4019] https://github.com/searxng/searxng/issues/4019 - [#4020] https://github.com/searxng/searxng/issues/4020 Related: - [#4011] https://github.com/searxng/searxng/pull/4011 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
		
							parent
							
								
									4b57bc3db1
								
							
						
					
					
						commit
						19d8ba76f6
					
				@ -6,7 +6,7 @@ DuckDuckGo Lite
 | 
			
		||||
 | 
			
		||||
from typing import TYPE_CHECKING
 | 
			
		||||
import re
 | 
			
		||||
from urllib.parse import urlencode, quote_plus
 | 
			
		||||
from urllib.parse import urlencode
 | 
			
		||||
import json
 | 
			
		||||
import babel
 | 
			
		||||
import lxml.html
 | 
			
		||||
@ -263,7 +263,7 @@ def request(query, params):
 | 
			
		||||
 | 
			
		||||
    params['url'] = url
 | 
			
		||||
    params['method'] = 'POST'
 | 
			
		||||
    params['data']['q'] = quote_plus(query)
 | 
			
		||||
    params['data']['q'] = query
 | 
			
		||||
 | 
			
		||||
    # The API is not documented, so we do some reverse engineering and emulate
 | 
			
		||||
    # what https://html.duckduckgo.com/html does when you press "next Page" link
 | 
			
		||||
@ -381,7 +381,11 @@ def response(resp):
 | 
			
		||||
    zero_click_info_xpath = '//div[@id="zero_click_abstract"]'
 | 
			
		||||
    zero_click = extract_text(eval_xpath(doc, zero_click_info_xpath)).strip()
 | 
			
		||||
 | 
			
		||||
    if zero_click and "Your IP address is" not in zero_click and "Your user agent:" not in zero_click:
 | 
			
		||||
    if zero_click and (
 | 
			
		||||
        "Your IP address is" not in zero_click
 | 
			
		||||
        and "Your user agent:" not in zero_click
 | 
			
		||||
        and "URL Decoded:" not in zero_click
 | 
			
		||||
    ):
 | 
			
		||||
        current_query = resp.search_params["data"].get("q")
 | 
			
		||||
 | 
			
		||||
        results.append(
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user