38def request(query, params):
39 eng_region: str = traits.get_region(params['searxng_locale'], traits.all_locale)
40
41
42 vqd = get_vqd(query, eng_region, force_request=True)
43
44 if not vqd:
45
46 params['url'] = None
47 return params
48
49 eng_lang = get_ddg_lang(traits, params['searxng_locale'])
50
51 args = {
52 'q': query,
53 'o': 'json',
54
55 'l': eng_region,
56 'f': ',,,,,',
57 'vqd': vqd,
58 }
59
60 if params['pageno'] > 1:
61 args['s'] = (params['pageno'] - 1) * 100
62
63 params['cookies']['ad'] = eng_lang
64 params['cookies']['ah'] = eng_region
65 params['cookies']['l'] = eng_region
66
67 safe_search = safesearch_cookies.get(params['safesearch'])
68 if safe_search is not None:
69 params['cookies']['p'] = safe_search
70 safe_search = safesearch_args.get(params['safesearch'])
71 if safe_search is not None:
72 args['p'] = safe_search
73
74 logger.debug("cookies: %s", params['cookies'])
75
76 params['url'] = f'https://duckduckgo.com/{search_path_map[ddg_category]}.js?{urlencode(args)}'
77
78
79 params['headers'] = {
80 'Referer': 'https://duckduckgo.com/',
81 'X-Requested-With': 'XMLHttpRequest',
82 }
83
84 return params
85
86