mirror of
https://github.com/searxng/searxng.git
synced 2026-06-08 19:07:50 +02:00
[fix] yep: send Sec-Fetch headers to bypass "access denied" (#6223)
Avoids yep's botblocking by sending Sec-Fetch-* headers (as the browser does).
This commit is contained in:
+27
-20
@@ -16,17 +16,18 @@ if t.TYPE_CHECKING:
|
|||||||
from searx.search.processors import OnlineParams
|
from searx.search.processors import OnlineParams
|
||||||
|
|
||||||
about = {
|
about = {
|
||||||
'website': 'https://yep.com/',
|
"website": "https://yep.com/",
|
||||||
'official_api_documentation': 'https://docs.developer.yelp.com',
|
"official_api_documentation": "https://docs.developer.yelp.com",
|
||||||
'use_official_api': False,
|
"use_official_api": False,
|
||||||
'require_api_key': False,
|
"require_api_key": False,
|
||||||
'results': 'JSON',
|
"results": "JSON",
|
||||||
}
|
}
|
||||||
|
|
||||||
base_url = "https://api.yep.com"
|
base_url = "https://api.yep.com"
|
||||||
|
web_base_url = "https://yep.com"
|
||||||
|
|
||||||
safesearch = True
|
safesearch = True
|
||||||
safesearch_map = {0: 'off', 1: 'moderate', 2: 'strict'}
|
safesearch_map = {0: "off", 1: "moderate", 2: "strict"}
|
||||||
|
|
||||||
enable_http2 = False
|
enable_http2 = False
|
||||||
|
|
||||||
@@ -36,34 +37,42 @@ _IMPORT_RE = re.compile(r"import\"(.*?)\";")
|
|||||||
_LANGUAGE_RE = re.compile(r"\{english:\".*?\",code_string:\"(.*?)\",code:\".*?\"\}")
|
_LANGUAGE_RE = re.compile(r"\{english:\".*?\",code_string:\"(.*?)\",code:\".*?\"\}")
|
||||||
|
|
||||||
|
|
||||||
def request(query: str, params: 'OnlineParams') -> None:
|
def request(query: str, params: "OnlineParams") -> None:
|
||||||
args = {'query': query, 'safeSearch': safesearch_map[params['safesearch']], 'limit': results_per_page}
|
args = {"query": query, "safeSearch": safesearch_map[params["safesearch"]], "limit": results_per_page}
|
||||||
|
|
||||||
engine_language: str = traits.get_language(params["searxng_locale"])
|
engine_language: str | None = traits.get_language(params["searxng_locale"])
|
||||||
if engine_language:
|
if engine_language:
|
||||||
args["hl"] = engine_language
|
args["hl"] = engine_language
|
||||||
|
|
||||||
params['url'] = f"{base_url}/search?{urlencode(args)}"
|
params["url"] = f"{base_url}/search?{urlencode(args)}"
|
||||||
params['headers']['Referer'] = 'https://yep.com/'
|
params["headers"].update(
|
||||||
params['headers']['Origin'] = 'https://yep.com'
|
{
|
||||||
|
"Referer": f"{web_base_url}/",
|
||||||
|
"Origin": web_base_url,
|
||||||
|
"Sec-Fetch-Dest": "empty",
|
||||||
|
"Sec-Fetch-Mode": "cors",
|
||||||
|
"Sec-Fetch-Site": "same-site",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def response(resp: 'SXNG_Response') -> EngineResults:
|
def response(resp: "SXNG_Response") -> EngineResults:
|
||||||
res = EngineResults()
|
res = EngineResults()
|
||||||
|
|
||||||
for result in resp.json()[1]['results']:
|
result: dict[str, str]
|
||||||
|
for result in resp.json()[1]["results"]:
|
||||||
res.add(
|
res.add(
|
||||||
res.types.MainResult(
|
res.types.MainResult(
|
||||||
url=result['url'],
|
url=result["url"],
|
||||||
title=result['title'],
|
title=result["title"],
|
||||||
content=html_to_text(result['snippet']),
|
content=html_to_text(result["snippet"]),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
def fetch_traits(engine_traits: 'EngineTraits'):
|
def fetch_traits(engine_traits: "EngineTraits"):
|
||||||
"""Fetch :ref:`languages <yep languages>` and :ref:`regions <yep
|
"""Fetch :ref:`languages <yep languages>` and :ref:`regions <yep
|
||||||
regions>` from Yep.
|
regions>` from Yep.
|
||||||
|
|
||||||
@@ -83,8 +92,6 @@ def fetch_traits(engine_traits: 'EngineTraits'):
|
|||||||
|
|
||||||
from searx.utils import gen_useragent
|
from searx.utils import gen_useragent
|
||||||
|
|
||||||
web_base_url = "https://yep.com"
|
|
||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
"User-Agent": gen_useragent(),
|
"User-Agent": gen_useragent(),
|
||||||
"Referer": f"{web_base_url}/",
|
"Referer": f"{web_base_url}/",
|
||||||
|
|||||||
Reference in New Issue
Block a user