diff --git a/searx/engines/bing.py b/searx/engines/bing.py index f849cef926e2f81d13a8ba880cb14ceb62a41f9e..0c67a0e7ed382dd085a30aad04c2d55c2aa899a2 100644 --- a/searx/engines/bing.py +++ b/searx/engines/bing.py @@ -7,6 +7,7 @@ import re from urllib.parse import urlencode from lxml import html from searx import logger +from random import randrange from searx.utils import eval_xpath, extract_text, match_language logger = logger.getChild('bing engine') @@ -31,6 +32,11 @@ language_aliases = {'zh-CN': 'zh-CHS', 'zh-TW': 'zh-CHT', 'zh-HK': 'zh-CHT'} base_url = 'https://www.bing.com/' search_string = 'search?{query}&first={offset}' +# safesearch definitions +safesearch_types = {2: 'STRICT', + 1: 'DEMOTE', + 0: 'OFF'} + def _get_offset_from_pageno(pageno): return (pageno - 1) * 10 + 1 @@ -53,6 +59,29 @@ def request(query, params): params['url'] = base_url + search_path + language = match_language(params['language'], supported_languages, language_aliases, 'en').lower() + + HV = randrange(1e10, 1e11) + WTS = randrange(1e11, 1e12) + CW = randrange(1e4, 1e5) + CH = randrange(1e3, 1e5) + + params['cookies']['SRCHHPGUSR'] = \ + f'SRCHLANG={language}&BRW=XW&BRH=M&CW={CW}&CH={CH}&DPR=1&UTC=-180&DM=1&HV={HV}&WTS={WTS}&ADLT=' \ + + safesearch_types.get(params['safesearch'], 'DEMOTE') + params['cookies']['_EDGE_S'] = 'mkt=' + language +\ + '&ui=' + language + '&F=1' + params['cookies']['_IDET'] = 'MIExp=0' + params['cookies']['MMCA'] = 'ID=B361EE82CAB9425EB0EE47B5E80DF8C1' + params['cookies']['BCP'] = 'AD=1&AL=1&SM=1' + params['cookies']['_SS'] = 'SID=3208F62E63AF6F2F047CE6C462866EF2&R=0&RB=0&GB=0&RG=0&RP=0' + params['cookies']['SRCHUID'] = 'V=2&GUID=EC79C7475528483B98FBE3F045357F18&dmnchg=1' + params['cookies']['MUID'] = '11635A5F5EAA6FD83B3F4AB55F836EFF' + params['cookies']['SRCHD'] = 'AF=IRPRST' + params['cookies']['MUIDB'] = '11635A5F5EAA6FD83B3F4AB55F836EFF' + params['cookies']['_EDGE_V'] = '1' + params['cookies']['SUID'] = 'M' + return params