on master help sign in
Merge https://github.com/asciimoo/searx into template_oscar

Conflicts: searx/translations/de/LC_MESSAGES/messages.po searx/translations/en/LC_MESSAGES/messages.po searx/translations/es/LC_MESSAGES/messages.po searx/translations/fr/LC_MESSAGES/messages.po searx/translations/hu/LC_MESSAGES/messages.po searx/translations/it/LC_MESSAGES/messages.po searx/translations/nl/LC_MESSAGES/messages.po searx/webapp.py

commit0e1035eac1a3359edb44c998abc7f76d6f7ad985 authorThomas Pointhuber <thomas.pointhuber@gmx.at> dateSun 26 Oct 2014, 19:11 (12 years ago) parentc36c93579f1676
70 files changed+5607−329
AUTHORS.rst+1 searx/__init__.py+12−1 searx/engines/__init__.py+6−5 searx/engines/duckduckgo_definitions.py+17−10 searx/engines/faroo.py+108 searx/engines/wikidata.py+42−19 searx/engines/yahoo_news.py+7−6 searx/engines/youtube.py+1−1 searx/https_rewrite.py+139−8 searx/https_rules/00README+17 searx/https_rules/Bing.xml+56 searx/https_rules/Dailymotion.xml+69 searx/https_rules/Deviantart.xml+53 searx/https_rules/DuckDuckGo.xml+38 searx/https_rules/Flickr.xml+44 searx/https_rules/Github-Pages.xml+11 searx/https_rules/Github.xml+94 searx/https_rules/Google-mismatches.xml+26 searx/https_rules/Google.org.xml+14 searx/https_rules/GoogleAPIs.xml+143 searx/https_rules/GoogleCanada.xml+6 searx/https_rules/GoogleImages.xml+65 searx/https_rules/GoogleMainSearch.xml+78 searx/https_rules/GoogleMaps.xml+67 searx/https_rules/GoogleMelange.xml+6 searx/https_rules/GoogleSearch.xml+135 searx/https_rules/GoogleServices.xml+345 searx/https_rules/GoogleShopping.xml+28 searx/https_rules/GoogleSorry.xml+7 searx/https_rules/GoogleTranslate.xml+8 searx/https_rules/GoogleVideos.xml+83 searx/https_rules/GoogleWatchBlog.xml+17 searx/https_rules/Google_App_Engine.xml+21 searx/https_rules/Googleplex.com.xml+16 searx/https_rules/OpenStreetMap.xml+15 searx/https_rules/Rawgithub.com.xml+14 searx/https_rules/Soundcloud.xml+101 searx/https_rules/ThePirateBay.xml+36 searx/https_rules/Torproject.xml+18 searx/https_rules/Twitter.xml+169 searx/https_rules/Vimeo.xml+75 searx/https_rules/WikiLeaks.xml+13 searx/https_rules/Wikimedia.xml+107 searx/https_rules/Yahoo.xml+2450 searx/https_rules/YouTube.xml+46 searx/query.py+23−20 searx/search.py+72−42 searx/settings.yml+7 searx/settings_robot.yml+3 searx/static/default/css/style.css+1−1 searx/static/default/less/style.less+8−7 searx/translations/de/LC_MESSAGES/messages.mo searx/translations/de/LC_MESSAGES/messages.po+37−33 searx/translations/en/LC_MESSAGES/messages.mo searx/translations/en/LC_MESSAGES/messages.po+22−18 searx/translations/es/LC_MESSAGES/messages.mo searx/translations/es/LC_MESSAGES/messages.po+32−29 searx/translations/fr/LC_MESSAGES/messages.mo searx/translations/fr/LC_MESSAGES/messages.po+32−29 searx/translations/hu/LC_MESSAGES/messages.mo searx/translations/hu/LC_MESSAGES/messages.po+37−31 searx/translations/it/LC_MESSAGES/messages.mo searx/translations/it/LC_MESSAGES/messages.po+30−27 searx/translations/ja/LC_MESSAGES/messages.mo searx/translations/ja/LC_MESSAGES/messages.po+377 searx/translations/nl/LC_MESSAGES/messages.mo searx/translations/nl/LC_MESSAGES/messages.po+29−26 searx/utils.py+7−3 searx/webapp.py+64−12 setup.py+2−1
AUTHORS.rst+1
@@ -26,3 +26,4 @@ generally made searx better:
2626- dp
2727- Martin Zimmermann
2828- @courgette
29+- @kernc
searx/__init__.py+12−1
@@ -17,6 +17,7 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
1717
1818from os import environ
1919from os.path import realpath, dirname, join, abspath
20+from searx.https_rewrite import load_https_rules
2021try:
2122 from yaml import load
2223except:
@@ -27,14 +28,24 @@ except:
2728searx_dir = abspath(dirname(__file__))
2829engine_dir = dirname(realpath(__file__))
2930
30−# if possible set path to settings using the enviroment variable SEARX_SETTINGS_PATH
31+# if possible set path to settings using the
32+# enviroment variable SEARX_SETTINGS_PATH
3133if 'SEARX_SETTINGS_PATH' in environ:
3234 settings_path = environ['SEARX_SETTINGS_PATH']
3335# otherwise using default path
3436else:
3537 settings_path = join(searx_dir, 'settings.yml')
3638
39+if 'SEARX_HTTPS_REWRITE_PATH' in environ:
40+ https_rewrite_path = environ['SEARX_HTTPS_REWRITE_PATH']
41+else:
42+ https_rewrite_path = join(searx_dir, 'https_rules')
3743
3844# load settings
3945with open(settings_path) as settings_yaml:
4046 settings = load(settings_yaml)
47+
48+# load https rules only if https rewrite is enabled
49+if settings.get('server', {}).get('https_rewrite'):
50+ # loade https rules
51+ load_https_rules(https_rewrite_path)
searx/engines/__init__.py+6−5
@@ -41,7 +41,7 @@ def load_module(filename):
4141 module.name = modname
4242 return module
4343
44−if not 'engines' in settings or not settings['engines']:
44+if 'engines' not in settings or not settings['engines']:
4545 print '[E] Error no engines found. Edit your settings.yml'
4646 exit(2)
4747
@@ -68,15 +68,15 @@ for engine_data in settings['engines']:
6868 engine.categories = ['general']
6969
7070 if not hasattr(engine, 'language_support'):
71− #engine.language_support = False
71+ # engine.language_support = False
7272 engine.language_support = True
7373
7474 if not hasattr(engine, 'timeout'):
75− #engine.language_support = False
75+ # engine.language_support = False
7676 engine.timeout = settings['server']['request_timeout']
7777
7878 if not hasattr(engine, 'shortcut'):
79− #engine.shortcut = '''
79+ # engine.shortcut = '''
8080 engine.shortcut = ''
8181
8282 # checking required variables
@@ -161,7 +161,8 @@ def get_engines_stats():
161161
162162 for engine in scores_per_result:
163163 if max_score_per_result:
164− engine['percentage'] = int(engine['avg'] / max_score_per_result * 100)
164+ engine['percentage'] = int(engine['avg']
165+ / max_score_per_result * 100)
165166 else:
166167 engine['percentage'] = 0
167168
searx/engines/duckduckgo_definitions.py+17−10
@@ -116,15 +116,22 @@ def response(resp):
116116
117117 if len(heading)>0:
118118 # TODO get infobox.meta.value where .label='article_title'
119− results.append({
120− 'infobox': heading,
121− 'id': infobox_id,
122− 'entity': entity,
123− 'content': content,
124− 'img_src' : image,
125− 'attributes': attributes,
126− 'urls': urls,
127− 'relatedTopics': relatedTopics
128− })
119+ if image==None and len(attributes)==0 and len(urls)==1 and len(relatedTopics)==0 and len(content)==0:
120+ results.append({
121+ 'url': urls[0]['url'],
122+ 'title': heading,
123+ 'content': content
124+ })
125+ else:
126+ results.append({
127+ 'infobox': heading,
128+ 'id': infobox_id,
129+ 'entity': entity,
130+ 'content': content,
131+ 'img_src' : image,
132+ 'attributes': attributes,
133+ 'urls': urls,
134+ 'relatedTopics': relatedTopics
135+ })
129136
130137 return results
searx/engines/faroo.pynew file+108
@@ -0,0 +1,108 @@
1+## Faroo (Web, News)
2+#
3+# @website http://www.faroo.com
4+# @provide-api yes (http://www.faroo.com/hp/api/api.html), require API-key
5+#
6+# @using-api yes
7+# @results JSON
8+# @stable yes
9+# @parse url, title, content, publishedDate, img_src
10+
11+from urllib import urlencode
12+from json import loads
13+import datetime
14+from searx.utils import searx_useragent
15+
16+# engine dependent config
17+categories = ['general', 'news']
18+paging = True
19+language_support = True
20+number_of_results = 10
21+api_key = None
22+
23+# search-url
24+url = 'http://www.faroo.com/'
25+search_url = url + 'api?{query}&start={offset}&length={number_of_results}&l={language}&src={categorie}&i=false&f=json&key={api_key}'
26+
27+search_category = {'general': 'web',
28+ 'news': 'news'}
29+
30+# do search-request
31+def request(query, params):
32+ offset = (params['pageno']-1) * number_of_results + 1
33+ categorie = search_category.get(params['category'], 'web')
34+
35+ if params['language'] == 'all':
36+ language = 'en'
37+ else:
38+ language = params['language'].split('_')[0]
39+
40+ # skip, if language is not supported
41+ if language != 'en' and\
42+ language != 'de' and\
43+ language != 'zh':
44+ return params
45+
46+ params['url'] = search_url.format(offset=offset,
47+ number_of_results=number_of_results,
48+ query=urlencode({'q': query}),
49+ language=language,
50+ categorie=categorie,
51+ api_key=api_key )
52+
53+ # using searx User-Agent
54+ params['headers']['User-Agent'] = searx_useragent()
55+
56+ return params
57+
58+
59+# get response from search-request
60+def response(resp):
61+ # HTTP-Code 401: api-key is not valide
62+ if resp.status_code == 401:
63+ raise Exception("API key is not valide")
64+ return []
65+
66+ # HTTP-Code 429: rate limit exceeded
67+ if resp.status_code == 429:
68+ raise Exception("rate limit has been exceeded!")
69+ return []
70+
71+ results = []
72+
73+ search_res = loads(resp.text)
74+
75+ # return empty array if there are no results
76+ if not search_res.get('results', {}):
77+ return []
78+
79+ # parse results
80+ for result in search_res['results']:
81+ if result['news']:
82+ # timestamp (how many milliseconds have passed between now and the beginning of 1970)
83+ publishedDate = datetime.datetime.fromtimestamp(result['date']/1000.0)
84+
85+ # append news result
86+ results.append({'url': result['url'],
87+ 'title': result['title'],
88+ 'publishedDate': publishedDate,
89+ 'content': result['kwic']})
90+
91+ else:
92+ # append general result
93+ # TODO, publishedDate correct?
94+ results.append({'url': result['url'],
95+ 'title': result['title'],
96+ 'content': result['kwic']})
97+
98+ # append image result if image url is set
99+ # TODO, show results with an image like in faroo
100+ if result['iurl']:
101+ results.append({'template': 'images.html',
102+ 'url': result['url'],
103+ 'title': result['title'],
104+ 'content': result['kwic'],
105+ 'img_src': result['iurl']})
106+
107+ # return results
108+ return results
searx/engines/wikidata.py+42−19
@@ -2,7 +2,7 @@ import json
22from requests import get
33from urllib import urlencode
44
5−resultCount=2
5+resultCount=1
66urlSearch = 'https://www.wikidata.org/w/api.php?action=query&list=search&format=json&srnamespace=0&srprop=sectiontitle&{query}'
77urlDetail = 'https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&props=labels%7Cinfo%7Csitelinks%7Csitelinks%2Furls%7Cdescriptions%7Cclaims&{query}'
88urlMap = 'https://www.openstreetmap.org/?lat={latitude}&lon={longitude}&zoom={zoom}&layers=M'
@@ -33,17 +33,20 @@ def response(resp):
3333 return results
3434
3535def getDetail(jsonresponse, wikidata_id, language):
36+ results = []
37+ urls = []
38+ attributes = []
39+
3640 result = jsonresponse.get('entities', {}).get(wikidata_id, {})
3741
3842 title = result.get('labels', {}).get(language, {}).get('value', None)
3943 if title == None:
40− title = result.get('labels', {}).get('en', {}).get('value', wikidata_id)
41− results = []
42− urls = []
43− attributes = []
44+ title = result.get('labels', {}).get('en', {}).get('value', None)
45+ if title == None:
46+ return results
4447
45− description = result.get('descriptions', {}).get(language, {}).get('value', '')
46− if description == '':
48+ description = result.get('descriptions', {}).get(language, {}).get('value', None)
49+ if description == None:
4750 description = result.get('descriptions', {}).get('en', {}).get('value', '')
4851
4952 claims = result.get('claims', {})
@@ -52,10 +55,15 @@ def getDetail(jsonresponse, wikidata_id, language):
5255 urls.append({ 'title' : 'Official site', 'url': official_website })
5356 results.append({ 'title': title, 'url' : official_website })
5457
58+ wikipedia_link_count = 0
5559 if language != 'en':
56− add_url(urls, 'Wikipedia (' + language + ')', get_wikilink(result, language + 'wiki'))
60+ wikipedia_link_count += add_url(urls, 'Wikipedia (' + language + ')', get_wikilink(result, language + 'wiki'))
5761 wikipedia_en_link = get_wikilink(result, 'enwiki')
58− add_url(urls, 'Wikipedia (en)', wikipedia_en_link)
62+ wikipedia_link_count += add_url(urls, 'Wikipedia (en)', wikipedia_en_link)
63+ if wikipedia_link_count == 0:
64+ misc_language = get_wiki_firstlanguage(result, 'wiki')
65+ if misc_language != None:
66+ add_url(urls, 'Wikipedia (' + misc_language + ')', get_wikilink(result, misc_language + 'wiki'))
5967
6068 if language != 'en':
6169 add_url(urls, 'Wiki voyage (' + language + ')', get_wikilink(result, language + 'wikivoyage'))
@@ -105,14 +113,20 @@ def getDetail(jsonresponse, wikidata_id, language):
105113 if date_of_death != None:
106114 attributes.append({'label' : 'Date of death', 'value' : date_of_death})
107115
108−
109− results.append({
110− 'infobox' : title,
111− 'id' : wikipedia_en_link,
112− 'content' : description,
113− 'attributes' : attributes,
114− 'urls' : urls
115− })
116+ if len(attributes)==0 and len(urls)==2 and len(description)==0:
117+ results.append({
118+ 'url': urls[0]['url'],
119+ 'title': title,
120+ 'content': description
121+ })
122+ else:
123+ results.append({
124+ 'infobox' : title,
125+ 'id' : wikipedia_en_link,
126+ 'content' : description,
127+ 'attributes' : attributes,
128+ 'urls' : urls
129+ })
116130
117131 return results
118132
@@ -120,7 +134,9 @@ def getDetail(jsonresponse, wikidata_id, language):
120134def add_url(urls, title, url):
121135 if url != None:
122136 urls.append({'title' : title, 'url' : url})
123−
137+ return 1
138+ else:
139+ return 0
124140
125141def get_mainsnak(claims, propertyName):
126142 propValue = claims.get(propertyName, {})
@@ -147,7 +163,8 @@ def get_string(claims, propertyName, defaultValue=None):
147163 if len(result) == 0:
148164 return defaultValue
149165 else:
150− return ', '.join(result)
166+ #TODO handle multiple urls
167+ return result[0]
151168
152169
153170def get_time(claims, propertyName, defaultValue=None):
@@ -213,3 +230,9 @@ def get_wikilink(result, wikiid):
213230 elif url.startswith('//'):
214231 url = 'https:' + url
215232 return url
233+
234+def get_wiki_firstlanguage(result, wikipatternid):
235+ for k in result.get('sitelinks', {}).keys():
236+ if k.endswith(wikipatternid) and len(k)==(2+len(wikipatternid)):
237+ return k[0:2]
238+ return None
searx/engines/yahoo_news.py+7−6
@@ -1,8 +1,9 @@
1−## Yahoo (News)
2−#
1+# Yahoo (News)
2+#
33# @website https://news.yahoo.com
4−# @provide-api yes (https://developer.yahoo.com/boss/search/), $0.80/1000 queries
5−#
4+# @provide-api yes (https://developer.yahoo.com/boss/search/)
5+# $0.80/1000 queries
6+#
67# @using-api no (because pricing)
78# @results HTML (using search portal)
89# @stable no (HTML can change)
@@ -22,7 +23,7 @@ paging = True
2223language_support = True
2324
2425# search-url
25−search_url = 'https://news.search.yahoo.com/search?{query}&b={offset}&fl=1&vl=lang_{lang}'
26+search_url = 'https://news.search.yahoo.com/search?{query}&b={offset}&fl=1&vl=lang_{lang}' # noqa
2627
2728# specific xpath variables
2829results_xpath = '//div[@class="res"]'
@@ -41,7 +42,7 @@ def request(query, params):
4142 language = 'en'
4243 else:
4344 language = params['language'].split('_')[0]
44−
45+
4546 params['url'] = search_url.format(offset=offset,
4647 query=urlencode({'p': query}),
4748 lang=language)
searx/engines/youtube.py+1−1
@@ -13,7 +13,7 @@ from urllib import urlencode
1313from dateutil import parser
1414
1515# engine dependent config
16−categories = ['videos']
16+categories = ['videos', 'music']
1717paging = True
1818language_support = True
1919
searx/https_rewrite.py+139−8
@@ -1,14 +1,145 @@
1+'''
2+searx is free software: you can redistribute it and/or modify
3+it under the terms of the GNU Affero General Public License as published by
4+the Free Software Foundation, either version 3 of the License, or
5+(at your option) any later version.
6+
7+searx is distributed in the hope that it will be useful,
8+but WITHOUT ANY WARRANTY; without even the implied warranty of
9+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10+GNU Affero General Public License for more details.
11+
12+You should have received a copy of the GNU Affero General Public License
13+along with searx. If not, see < http://www.gnu.org/licenses/ >.
14+
15+(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
16+'''
17+
118import re
19+from lxml import etree
20+from os import listdir
21+from os.path import isfile, isdir, join
22+
223
324# https://gitweb.torproject.org/\
425# pde/https-everywhere.git/tree/4.0:/src/chrome/content/rules
526
627# HTTPS rewrite rules
7−https_rules = (
8− # from
9− (re.compile(r'^http://(www\.|m\.|)?xkcd\.(?:com|org)/', re.I | re.U),
10− # to
11− r'https://\1xkcd.com/'),
12− (re.compile(r'^https?://(?:ssl)?imgs\.xkcd\.com/', re.I | re.U),
13− r'https://sslimgs.xkcd.com/'),
14−)
28+https_rules = []
29+
30+
31+# load single ruleset from a xml file
32+def load_single_https_ruleset(filepath):
33+ ruleset = ()
34+
35+ # init parser
36+ parser = etree.XMLParser()
37+
38+ # load and parse xml-file
39+ try:
40+ tree = etree.parse(filepath, parser)
41+ except:
42+ # TODO, error message
43+ return ()
44+
45+ # get root node
46+ root = tree.getroot()
47+
48+ # check if root is a node with the name ruleset
49+ # TODO improve parsing
50+ if root.tag != 'ruleset':
51+ return ()
52+
53+ # check if rule is deactivated by default
54+ if root.attrib.get('default_off'):
55+ return ()
56+
57+ # check if rule does only work for specific platforms
58+ if root.attrib.get('platform'):
59+ return ()
60+
61+ hosts = []
62+ rules = []
63+ exclusions = []
64+
65+ # parse childs from ruleset
66+ for ruleset in root:
67+ # this child define a target
68+ if ruleset.tag == 'target':
69+ # check if required tags available
70+ if not ruleset.attrib.get('host'):
71+ continue
72+
73+ # convert host-rule to valid regex
74+ host = ruleset.attrib.get('host')\
75+ .replace('.', '\.').replace('*', '.*')
76+
77+ # append to host list
78+ hosts.append(host)
79+
80+ # this child define a rule
81+ elif ruleset.tag == 'rule':
82+ # check if required tags available
83+ if not ruleset.attrib.get('from')\
84+ or not ruleset.attrib.get('to'):
85+ continue
86+
87+ # TODO hack, which convert a javascript regex group
88+ # into a valid python regex group
89+ rule_from = ruleset.attrib.get('from').replace('$', '\\')
90+ rule_to = ruleset.attrib.get('to').replace('$', '\\')
91+
92+ # TODO, not working yet because of the hack above,
93+ # currently doing that in webapp.py
94+ # rule_from_rgx = re.compile(rule_from, re.I)
95+
96+ # append rule
97+ rules.append((rule_from, rule_to))
98+
99+ # this child define an exclusion
100+ elif ruleset.tag == 'exclusion':
101+ # check if required tags available
102+ if not ruleset.attrib.get('pattern'):
103+ continue
104+
105+ exclusion_rgx = re.compile(ruleset.attrib.get('pattern'))
106+
107+ # append exclusion
108+ exclusions.append(exclusion_rgx)
109+
110+ # convert list of possible hosts to a simple regex
111+ # TODO compress regex to improve performance
112+ try:
113+ target_hosts = re.compile('^(' + '|'.join(hosts) + ')', re.I | re.U)
114+ except:
115+ return ()
116+
117+ # return ruleset
118+ return (target_hosts, rules, exclusions)
119+
120+
121+# load all https rewrite rules
122+def load_https_rules(rules_path):
123+ # check if directory exists
124+ if not isdir(rules_path):
125+ print("[E] directory not found: '" + rules_path + "'")
126+ return
127+
128+ # search all xml files which are stored in the https rule directory
129+ xml_files = [join(rules_path, f)
130+ for f in listdir(rules_path)
131+ if isfile(join(rules_path, f)) and f[-4:] == '.xml']
132+
133+ # load xml-files
134+ for ruleset_file in xml_files:
135+ # calculate rewrite-rules
136+ ruleset = load_single_https_ruleset(ruleset_file)
137+
138+ # skip if no ruleset returned
139+ if not ruleset:
140+ continue
141+
142+ # append ruleset
143+ https_rules.append(ruleset)
144+
145+ print(' * {n} https-rules loaded'.format(n=len(https_rules)))
searx/https_rules/00READMEnew file+17
@@ -0,0 +1,17 @@
1+<!--
2+This directory contains web site rewriting rules for the
3+HTTPS Everywhere software, available from
4+https://www.eff.org/https-everywhere
5+
6+These rules were contributed to the project by users and aim to
7+enable routine secure access to as many different web sites as
8+possible. They are automatically installed together with the
9+HTTPS Everywhere software. The presence of these rules does not
10+mean that an HTTPS Everywhere user accessed, or intended to
11+access, any particular web site.
12+
13+For information about how to create additional HTTPS Everywhere
14+rewriting rules to add support for new sites, please see
15+
16+https://www.eff.org/https-everywhere/rulesets
17+-->
searx/https_rules/Bing.xmlnew file+56
@@ -0,0 +1,56 @@
1+<!--
2+ For other Microsoft coverage, see Microsoft.xml.
3+
4+
5+ CDN buckets:
6+
7+ - a134.lm.akamai.net
8+
9+ - akam.bing.com
10+ - *.mm.bing.net
11+
12+
13+ Nonfunctional domains:
14+
15+ - m2.cn.bing.com
16+ - origin.bj1.bing.com
17+ - blogs.bing.com
18+
19+
20+ Fully covered domains:
21+
22+ - bing.com subdomains:
23+
24+ - (www.)
25+ - c.bing (tracking beacons)
26+ - cn.bing
27+ - h.bing
28+ - ssl
29+ - testfamilysafety.bing
30+ - udc.bing
31+ - (www.)bing
32+
33+ - *.mm.bing.net
34+ - api.bing.com
35+
36+-->
37+<ruleset name="Bing">
38+
39+ <target host="bing.com" />
40+ <target host="*.bing.com" />
41+ <target host="*.mm.bing.net" />
42+
43+
44+ <securecookie host=".*\.bing\.com$" name=".+" />
45+
46+
47+ <rule from="^http://((?:c|cn|h|ssl|testfamilysafety|udc|www)\.)?bing\.com/"
48+ to="https://$1bing.com/" />
49+
50+ <rule from="^http://([^/:@]*)\.mm\.bing\.net/"
51+ to="https://$1.mm.bing.com/"/>
52+
53+ <rule from="^http://([^/:@]*)\.api\.bing\.net/"
54+ to="https://$1.api.bing.com/"/>
55+
56+</ruleset>
searx/https_rules/Dailymotion.xmlnew file+69
@@ -0,0 +1,69 @@
1+<!--
2+ Nonfunctional domains:
3+
4+ - blog.dailymotion.com
5+ - press.dailymotion.com (shows steaw.com, CN: www.steaw.com)
6+ - proxy-46.dailymotion.com
7+ - publicite.dailymotion.com
8+ - publisher.dailymotion.com (reset)
9+ - vid.ak.dmcdn.net (403, Akamai)
10+ - vid2.ak.dmcdn.net (504, akamai)
11+
12+
13+ Problematic domains:
14+
15+ - ak2.static.dailymotion.com (mismatched, CN: *.dmcdn.net)
16+ - support.dmcloud.net (mismatched, CN: *.zendesk.com)
17+
18+
19+ Partially covered domains:
20+
21+ - (www.)dailymotion.com
22+
23+ - cdn/manifest/video/\w+.mnft 403s
24+ - crossdomain.xml breaks videos
25+
26+-->
27+<ruleset name="Dailymotion (default off)" default_off="breaks some embedded videos">
28+
29+ <target host="dailymotion.com" />
30+ <!--
31+ * for cross-domain cookie.
32+ -->
33+ <target host="*.dailymotion.com" />
34+ <!--
35+ https://mail1.eff.org/pipermail/https-everywhere-rules/2012-July/001241.html
36+ -->
37+ <exclusion pattern="^http://(?:www\.)?dailymotion\.com/(?:cdn/[\w-]+/video/|crossdomain\.xml$)" />
38+ <target host="ak2.static.dailymotion.com" />
39+ <target host="*.dmcdn.net" />
40+ <target host="dmcloud.net" />
41+ <target host="*.dmcloud.net" />
42+
43+
44+ <!-- Testing wrt embedded breakage.
45+
46+ securecookie host="^.*\.dailymotion\.com$" name=".+" /-->
47+ <!--
48+ Omniture tracking cookies:
49+ -->
50+ <securecookie host="^\.dailymotion\.com$" name="^s_\w+$" />
51+ <securecookie host="^www\.dailymotion\.com$" name=".+" />
52+
53+
54+ <rule from="^http://(erroracct\.|www\.)?dailymotion\.com/"
55+ to="https://$1dailymotion.com/" />
56+
57+ <rule from="^http://(s\d|static(?:\d|s\d-ssl))\.dmcdn\.net/"
58+ to="https://$1.dmcdn.net/" />
59+
60+ <rule from="^https?://ak2\.static\.dailymotion\.com/"
61+ to="https://static1-ssl.dmcdn.net/" />
62+
63+ <rule from="^http://(s\.|www\.)?dmcloud\.net/"
64+ to="https://$1dmcloud.net/" />
65+
66+ <rule from="^https?://support\.dmcloud\.net/"
67+ to="https://dmcloud.zendesk.com/" />
68+
69+</ruleset>
searx/https_rules/Deviantart.xmlnew file+53
@@ -0,0 +1,53 @@
1+<!--
2+ For problematic rules, see Deviantart-mismatches.xml.
3+
4+
5+ Other deviantArt rulesets:
6+
7+ - Sta.sh.xml
8+
9+
10+ ToDo: Find edgecast URL for /(fc|th)\d+.
11+
12+
13+ Mixed content:
14+
15+ - Images on *.....com from e.deviantart.net *
16+
17+ * Secured by us
18+
19+-->
20+<ruleset name="DeviantArt (pending)" default_off="site operator says not ready yet">
21+
22+ <target host="deviantart.com" />
23+ <target host="*.deviantart.com" />
24+ <target host="deviantart.net" />
25+ <target host="*.deviantart.net" />
26+
27+
28+ <!-- Not secured by server:
29+ -->
30+ <!--securecookie host="^\.deviantart\.com$" name="^userinfo$" /-->
31+
32+ <securecookie host="^\.deviantart\.com$" name=".*" />
33+
34+
35+ <!-- Redirects from com to net, but does so successfully by itself.
36+ -->
37+ <rule from="^http://([aei]|fc\d\d|s[ht]|th\d\d)\.deviantart\.(com|net)/"
38+ to="https://$1.deviantart.$2/" />
39+
40+ <!-- This handles everything that isn't in the first rule.
41+ Namely, usernames, backend, fc, th, and (www.).
42+ These domains present a cert that is only
43+ valid for .com.
44+ Note that .net isn't used on DA, but.net does
45+ redirect to .com, and we shouldn't break what would
46+ otherwise work.
47+ Mustn't rewrite from https here, as doing so
48+ would conflict with the first rule.
49+ -->
50+ <rule from="^http://([^/:@\.]+\.)?deviantart\.(?:com|net)/"
51+ to="https://$1deviantart.com/" />
52+
53+</ruleset>
searx/https_rules/DuckDuckGo.xmlnew file+38
@@ -0,0 +1,38 @@
1+<!--
2+ Problematic domains:
3+
4+ - www.dukgo.com (mismatched, CN: dukgo.com)
5+
6+
7+ Fully covered domains:
8+
9+ - (www.)dukgo.com (www → ^)
10+
11+-->
12+<ruleset name="DuckDuckGo">
13+ <target host="duckduckgo.com" />
14+ <target host="*.duckduckgo.com" />
15+ <target host="ddg.gg" />
16+ <target host="duck.co" />
17+ <target host="i.duck.co" />
18+ <target host="dukgo.com" />
19+ <target host="www.dukgo.com" />
20+
21+ <exclusion pattern="^http://(help|meme)\.duckduckgo\.com/" />
22+
23+ <securecookie host="^duck\.co$" name=".*"/>
24+
25+ <rule from="^http://duckduckgo\.com/" to="https://duckduckgo.com/"/>
26+ <rule from="^http://([^/:@\.]+)\.duckduckgo\.com/" to="https://$1.duckduckgo.com/"/>
27+ <!-- TODO: What does ddg.gg/foo do? Runs query foo, redirects to homepage, or error? -->
28+ <rule from="^http://ddg\.gg/$" to="https://duckduckgo.com/" />
29+
30+ <rule from="^http://duck\.co/" to="https://duck.co/" />
31+
32+ <rule from="^http://i\.duck\.co/"
33+ to="https://duckduckgo.com/"/>
34+
35+ <rule from="^http://(?:www\.)?dukgo\.com/"
36+ to="https://dukgo.com/" />
37+
38+</ruleset>
searx/https_rules/Flickr.xmlnew file+44
@@ -0,0 +1,44 @@
1+<!--
2+ For other Yahoo coverage, see Yahoo.xml.
3+
4+
5+ These altnames don't exist:
6+
7+ - www.blog.flickr.net
8+ - www.code.flickr.net
9+
10+-->
11+<ruleset name="Flickr">
12+
13+ <target host="flic.kr" />
14+ <target host="*.flic.kr" />
15+ <target host="flickr.com" />
16+ <target host="*.flickr.com" />
17+ <target host="*.flickr.net" />
18+ <target host="*.staticflickr.com" />
19+
20+
21+ <!-- Not secured by server:
22+ -->
23+ <!--securecookie host="^\.flic\.kr$" name="^BX$" /-->
24+
25+ <securecookie host="^\.flic\.kr$" name=".+" />
26+ <securecookie host=".*\.flickr\.com$" name=".+" />
27+
28+
29+ <rule from="^http://flic\.kr/"
30+ to="https://flic.kr/" />
31+
32+ <rule from="^http://(api\.|www\.)?flickr\.com/"
33+ to="https://$1flickr.com/" />
34+
35+ <rule from="^http://s(ecure|tatic)\.flickr\.com/"
36+ to="https://s$1.flickr.com/" />
37+
38+ <rule from="^http://(c2|farm\d+)\.static(\.)?flickr\.com/"
39+ to="https://$1.static$2flickr.com/" />
40+
41+ <rule from="^http://(blog|code)\.flickr\.net/"
42+ to="https://$1.flickr.net/" />
43+
44+</ruleset>
searx/https_rules/Github-Pages.xmlnew file+11
@@ -0,0 +1,11 @@
1+<!--
2+ For other GitHub coverage, see Github.xml.
3+-->
4+<ruleset name="GitHub Pages">
5+
6+ <target host="*.github.io" />
7+
8+ <rule from="^http://([^/@:\.]+)\.github\.io/"
9+ to="https://$1.github.io/" />
10+
11+</ruleset>
searx/https_rules/Github.xmlnew file+94
@@ -0,0 +1,94 @@
1+<!--
2+ Other GitHub rulesets:
3+
4+ - Github-Pages.xml
5+ - Guag.es.xml
6+ - Speaker_Deck.com.xml
7+
8+
9+ CDN buckets:
10+
11+ - github-images.s3.amazonaws.com
12+ - github.global.ssl.fastly.net
13+ - a248.e.akamai.net/assets.github.com/
14+ - a248.e.akamai.net/camo.github.com/
15+ - s3.amazonaws.com/github/ | d24z2fz21y4fag.cloudfront.net
16+ - github.myshopify.com
17+
18+
19+ Fully covered domains:
20+
21+ - github.com subdomains:
22+
23+ - (www.)
24+ - assets\d+
25+ - assets-cdn
26+ - bounty
27+ - cloud
28+ - f.cloud
29+ - codeload
30+ - developer
31+ - eclipse
32+ - enterprise
33+ - gist
34+ - gist-assets
35+ - help
36+ - identicons
37+ - jobs
38+ - mac
39+ - mobile
40+ - nodeload
41+ - octodex
42+ - pages
43+ - raw
44+ - rg3
45+ - shop
46+ - status
47+ - support
48+ - training
49+ - try
50+ - wiki
51+ - windows
52+
53+ - collector.githubapp.com
54+
55+ - githubusercontent.com
56+
57+-->
58+<ruleset name="GitHub">
59+
60+ <target host="github.com" />
61+ <target host="*.github.com" />
62+ <target host="github.io" />
63+ <target host="*.githubusercontent.com" />
64+ <target host="collector.githubapp.com" />
65+
66+
67+ <!-- Secured by server:
68+ -->
69+ <!--securecookie host="^github\.com$" name="^(_gh_sess|tz|user_session)$" /-->
70+ <!--securecookie host="^\.github\.com$" name="^(dotcom_user|logged_in)$" /-->
71+ <!--securecookie host="^enterprise\.github\.com$" name="^(_enterprise_web|request_method)$" /-->
72+ <!--securecookie host="^gist\.github\.com$" name="^_gist_session$" /-->
73+ <!--securecookie host="^help\.github\.com$" name="^_help_session$" /-->
74+ <!--
75+ Not secured by server:
76+ -->
77+ <!--securecookie host="^status\.github\.com$" name="^rack\.session$" /-->
78+
79+ <securecookie host="^(?:.*\.)?github\.com$" name=".+" />
80+
81+
82+ <rule from="^http://((?:assets\d+|assets-cdn|bounty|cloud|f\.cloud|codeload|developer|eclipse|enterprise|gist|gist-assets|help|identicons|jobs|mac|mobile|nodeload|octodex|pages|raw|rg3|shop|status|support|training|try|wiki|windows|www)\.)?github\.com/"
83+ to="https://$1github.com/" />
84+
85+ <rule from="^http://collector\.githubapp\.com/"
86+ to="https://collector.githubapp.com/" />
87+
88+ <rule from="^https?://github\.io/"
89+ to="https://pages.github.com/" />
90+
91+ <rule from="^http://([^/@:\.]+)\.githubusercontent\.com/"
92+ to="https://$1.githubusercontent.com/" />
93+
94+</ruleset>
searx/https_rules/Google-mismatches.xmlnew file+26
@@ -0,0 +1,26 @@
1+<!--
2+
3+ Problematic domains:
4+
5+ - (www.)apture.com (works, mismatched, CN: *.google.com)
6+
7+-->
8+<ruleset name="Google (mismatches)" default_off="mismatches">
9+
10+ <!-- Akamai -->
11+ <target host="js.admeld.com"/>
12+ <target host="apture.com" />
13+ <target host="www.apture.com" />
14+ <target host="googleartproject.com"/>
15+ <target host="www.googleartproject.com"/>
16+
17+ <rule from="^http://js\.admeld\.com/"
18+ to="https://js.admeld.com/"/>
19+
20+ <rule from="^https?://(?:www\.)?apture\.com/"
21+ to="https://apture.com/" />
22+
23+ <rule from="^http://(?:www\.)?googleartproject\.com/"
24+ to="https://www.googleartproject.com/"/>
25+
26+</ruleset>
searx/https_rules/Google.org.xmlnew file+14
@@ -0,0 +1,14 @@
1+<!--
2+ For other Google coverage, see GoogleServices.xml.
3+
4+-->
5+<ruleset name="Google.org">
6+
7+ <target host="google.org" />
8+ <target host="www.google.org" />
9+
10+
11+ <rule from="^http://(www\.)?google\.org/"
12+ to="https://$1google.org/" />
13+
14+</ruleset>
searx/https_rules/GoogleAPIs.xmlnew file+143
@@ -0,0 +1,143 @@
1+<!--
2+ For other Google coverage, see GoogleServices.xml.
3+
4+
5+ Nonfunctional domains:
6+
7+ - hosted.gmodules.com *
8+ - img0.gmodules.com *
9+ - p.gmodules.com *
10+
11+ * 404; mismatched, CN: *.googleusercontent.com
12+
13+
14+ Problematic domains:
15+
16+ - gmodules.com (503, CN: www.google.com)
17+ - www.gmodules.com (503, CN: *.googleusercontent.com)
18+ - gstatic.com (404, valid cert)
19+ - api.recaptcha.net (works; mismatched, CN: google.com)
20+
21+
22+ Partially covered domains:
23+
24+ - (www.)gmodules.com (→ www.google.com)
25+ - (www.)google.com
26+ - chart.apis.google.com (→ chart.googleapis.com)
27+
28+
29+ Fully covered domains:
30+
31+ - api.google.com
32+
33+ - *.clients.google.com:
34+
35+ - linkhelp
36+
37+ - ssl.google-analytics.com
38+ - www.google-analytics.com
39+
40+ - googleapis.com subdomains:
41+
42+ - ajax
43+ - chart
44+ - *.commondatastorage
45+ - fonts
46+ - *.storage
47+ - www
48+
49+ - gstatic.com subdomains:
50+
51+ - (www.) (^ → www)
52+ - csi
53+ - encrypted-tbn\d
54+ - g0
55+ - *.metric
56+ - ssl
57+ - t\d
58+
59+ - api.recaptcha.net (→ www.google.com)
60+ - api-secure.recaptcha.net
61+ - gdata.youtube.com
62+
63+
64+ ssl.google-analytics.com/ga.js sets __utm\w wildcard
65+ cookies on whichever domain it is loaded from.
66+
67+-->
68+<ruleset name="Google APIs">
69+
70+ <target host="gmodules.com" />
71+ <target host="www.gmodules.com" />
72+ <target host="google.com" />
73+ <target host="apis.google.com" />
74+ <target host="*.apis.google.com" />
75+ <target host="*.clients.google.com" />
76+ <target host="www.google.com" />
77+ <target host="*.google-analytics.com" />
78+ <target host="*.googleapis.com" />
79+ <target host="gstatic.com" />
80+ <target host="*.gstatic.com" />
81+ <!-- Captive portal detection redirects to this URL, and many captive
82+ portals break TLS, so exempt this redirect URL.
83+ See GitHub bug #368
84+ -->
85+ <exclusion pattern="^http://www\.gstatic\.com/generate_204" />
86+ <target host="*.recaptcha.net" />
87+ <target host="gdata.youtube.com" />
88+ <exclusion pattern="^http://gdata\.youtube\.com/crossdomain\.xml" />
89+
90+
91+ <securecookie host="^ssl\.google-analytics\.com$" name=".+" />
92+
93+
94+ <rule from="^http://(?:www\.)?gmodules\.com/ig/images/"
95+ to="https://www.google.com/ig/images/" />
96+
97+ <!-- jsapi was causing problems on some sites that embed google maps:
98+ https://trac.torproject.org/projects/tor/ticket/2335
99+ Apparently now fixed; thanks, Google!
100+ -->
101+ <rule from="^http://(?:www\.)?google\.com/(afsonline/|chart|jsapi|recaptcha/|uds)"
102+ to="https://www.google.com/$1" />
103+
104+ <rule from="^http://(api|[\w-]+\.client)s\.google\.com/"
105+ to="https://$1s.google.com/" />
106+
107+ <rule from="^http://chart\.apis\.google\.com/chart"
108+ to="https://chart.googleapis.com/chart" />
109+
110+ <rule from="^http://(ssl|www)\.google-analytics\.com/"
111+ to="https://$1.google-analytics.com/" />
112+
113+ <rule from="^http://(ajax|chart|fonts|www)\.googleapis\.com/"
114+ to="https://$1.googleapis.com/" />
115+
116+ <rule from="^http://([^@:\./]+\.)?(commondata)?storage\.googleapis\.com/"
117+ to="https://$1$2storage.googleapis.com/" />
118+
119+ <!-- There is an interesting question about whether we should
120+ append &strip=1 to all cache URLs. This causes them to load
121+ without images and styles, which is more secure but can look
122+ worse.
123+ Without &strip=1, the images and styles from the cached
124+ pages still load from the original, typically unencrypted, page.
125+ With &strip=1, the cached page will be text-only and
126+ will come exclusively from Google's HTTPS server.
127+ -->
128+ <rule from="^http://(?:www\.)?gstatic\.com/"
129+ to="https://www.gstatic.com/" />
130+
131+ <rule from="^http://(csi|encrypted-tbn\d|g0|[\w-]+\.metric|ssl|t\d)\.gstatic\.com/"
132+ to="https://$1.gstatic.com/" />
133+
134+ <rule from="^http://api\.recaptcha\.net/"
135+ to="https://www.google.com/recaptcha/api/" />
136+
137+ <rule from="^http://api-secure\.recaptcha\.net/"
138+ to="https://api-secure.recaptcha.net/" />
139+
140+ <rule from="^http://gdata\.youtube\.com/"
141+ to="https://gdata.youtube.com/" />
142+
143+</ruleset>
searx/https_rules/GoogleCanada.xmlnew file+6
@@ -0,0 +1,6 @@
1+<ruleset name="GoogleCanada">
2+ <target host="google.ca" />
3+ <target host="*.google.ca" />
4+ <rule from="^http://([^/:@\.]+)\.google\.ca/finance" to="https://$1.google.ca/finance"/>
5+</ruleset>
6+
searx/https_rules/GoogleImages.xmlnew file+65
@@ -0,0 +1,65 @@
1+<!--
2+ For other Google coverage, see GoogleServices.xml.
3+
4+
5+ Problematic domains:
6+
7+ - www.google.bo *
8+ - www.google.co *
9+ - www.google.ec *
10+ - www.google.in *
11+ - www.google.kr *
12+ - www.google.com.kz **
13+ - www.google.com.lk *
14+ - www.google.mx **
15+ - www.google.sg *
16+ - www.google.sl *
17+ - www.google.ug *
18+ - www.google.vn *
19+
20+ * 404; mismatched, CN: google.com
21+ ** Works; mismatched, CN: google.com
22+
23+-->
24+<ruleset name="Google Images">
25+
26+ <target host="google.*" />
27+ <target host="www.google.*" />
28+ <target host="google.co.*" />
29+ <target host="www.google.co.*" />
30+ <target host="google.com" />
31+ <target host="images.google.com" />
32+ <target host="google.com.*" />
33+ <target host="www.google.com.*" />
34+ <!--
35+ Only handle image-related paths in this ruleset:
36+ -->
37+ <exclusion pattern="^http://(?:www\.)?google(?:\.com?)?\.\w{2,3}/(?!(?:advanced_image_search|imghp|.*tb(?:m=isch|s=sbi)))" />
38+
39+
40+ <rule from="^http://(?:www\.)?google\.com/"
41+ to="https://www.google.com/" />
42+
43+ <rule from="^http://images\.google\.com/"
44+ to="https://images.google.com/" />
45+
46+ <!-- First handle problematic domains:
47+ -->
48+ <rule from="^http://(?:www\.)?google\.co/"
49+ to="https://www.google.com/" />
50+
51+ <rule from="^http://(?:www\.)?google\.(?:co\.)?(in|kr|ug)/"
52+ to="https://www.google.co.$1/" />
53+
54+ <rule from="^http://(?:www\.)?google\.(?:com\.)?(kz|lk)/"
55+ to="https://www.google.$1/" />
56+
57+ <rule from="^http://(?:www\.)?google\.(?:com\.)?(bo|ec|mx|sg|sl|vn)/"
58+ to="https://www.google.com.$1/" />
59+
60+ <!-- And then the rest:
61+ -->
62+ <rule from="^http://(?:www\.)?google\.(com?\.)?(ae|ar|at|au|bg|bh|br|ca|ch|cl|co|cr|cu|de|eg|es|fi|fr|gh|gt|hr|id|ie|il|it|jo|jp|jm|ke|kw|lb|ly|my|na|ng|nl|no|nz|om|pa|pe|pk|pl|pt|py|qa|ro|ru|rw|sa|se|sv|th|tr|uk|uy|ve|za|zw)/"
63+ to="https://www.google.$1$2/" />
64+
65+</ruleset>
searx/https_rules/GoogleMainSearch.xmlnew file+78
@@ -0,0 +1,78 @@
1+<ruleset name="Search www.google.com">
2+
3+<!--
4+Enabling this ruleset should cause searches to go to
5+https://www.google.com rather than https://encrypted.google.com. Note that
6+the filename is important; it must be before GoogleSearch.xml in a bash
7+expansion of src/chrome/content/rules/*.xml in order to take precedence.
8+-->
9+
10+ <target host="*.google.com" />
11+ <target host="google.com" />
12+ <target host="www.google.com.*" />
13+ <target host="google.com.*" />
14+ <target host="www.google.co.*" />
15+ <target host="google.co.*" />
16+ <target host="www.google.*" />
17+ <target host="google.*" />
18+ <!-- beyond clients1 these do not currently exist in the ccTLDs,
19+ but just in case... -->
20+ <target host="clients1.google.com.*" />
21+ <target host="clients2.google.com.*" />
22+ <target host="clients3.google.com.*" />
23+ <target host="clients4.google.com.*" />
24+ <target host="clients5.google.com.*" />
25+ <target host="clients6.google.com.*" />
26+ <target host="clients1.google.co.*" />
27+ <target host="clients2.google.co.*" />
28+ <target host="clients3.google.co.*" />
29+ <target host="clients4.google.co.*" />
30+ <target host="clients5.google.co.*" />
31+ <target host="clients6.google.co.*" />
32+ <target host="clients1.google.*" />
33+ <target host="clients2.google.*" />
34+ <target host="clients3.google.*" />
35+ <target host="clients4.google.*" />
36+ <target host="clients5.google.*" />
37+ <target host="clients6.google.*" />
38+
39+ <rule from="^http://www\.google\.com/$"
40+ to="https://www.google.com/"/>
41+
42+ <!-- The most basic case. -->
43+
44+ <rule from="^http://(?:www\.)?google\.com/search"
45+ to="https://www.google.com/search"/>
46+
47+ <!-- A very annoying exception that we seem to need for the basic case -->
48+
49+ <exclusion pattern="^http://(?:www\.)?google\.com/search.*tbs=shop" />
50+ <exclusion pattern="^http://clients[0-9]\.google\.com/.*client=products.*" />
51+ <exclusion pattern="^http://suggestqueries\.google\.com/.*client=.*" />
52+
53+ <!-- https://trac.torproject.org/projects/tor/ticket/9713 -->
54+
55+ <exclusion pattern="^http://clients[0-9]\.google\.com/ocsp" />
56+
57+ <!-- This is necessary for image results links from web search results -->
58+
59+ <exclusion pattern="^http://(?:www\.)?google\.com/search.*tbm=isch.*" />
60+
61+ <rule from="^http://(?:www\.)?google\.com/webhp"
62+ to="https://www.google.com/webhp"/>
63+
64+ <rule from="^http://(?:www\.)?google\.com/#"
65+ to="https://www.google.com/#"/>
66+
67+ <rule from="^http://(?:www\.)?google\.com/$"
68+ to="https://www.google.com/"/>
69+
70+ <!-- Completion urls look like this:
71+
72+http://clients2.google.co.jp/complete/search?hl=ja&client=hp&expIds=17259,24660,24729,24745&q=m&cp=1 HTTP/1.1\r\n
73+
74+ -->
75+ <rule from="^http://clients[0-9]\.google\.com/complete/search"
76+ to="https://clients1.google.com/complete/search"/>
77+
78+</ruleset>
searx/https_rules/GoogleMaps.xmlnew file+67
@@ -0,0 +1,67 @@
1+<!--
2+ Problematic domains:
3+
4+ - khms *
5+ - khms[0-3] *
6+
7+ * $ 404s
8+
9+
10+ Fully covered domains:
11+
12+ - google.com subdomains:
13+
14+ - khms
15+ - khms[0-3]
16+
17+-->
18+<ruleset name="Google Maps">
19+
20+ <target host="maps.google.*" />
21+ <!--
22+ https://trac.torproject.org/projects/tor/ticket/8627
23+ -->
24+ <exclusion pattern="^http://maps\.google\.com/local_url" />
25+ <exclusion pattern="^http://maps\.google\.gr/transitathens" />
26+ <target host="maps.google.co.*" />
27+ <target host="khms.google.com" />
28+ <target host="khms0.google.com" />
29+ <target host="khms1.google.com" />
30+ <target host="khms2.google.com" />
31+ <target host="khms3.google.com" />
32+ <target host="maps-api-ssl.google.com" />
33+ <target host="mw2.google.com" />
34+ <target host="maps.google.com.*" />
35+ <target host="maps.googleapis.com" />
36+ <!--
37+ https://mail1.eff.org/pipermail/https-everywhere-rules/2012-September/001317.html
38+ -->
39+ <!--exclusion pattern="^http://maps\.googleapis\.com/map(files/lib/map_1_20\.swf|sapi/publicapi\?file=flashapi)" /-->
40+ <exclusion pattern="^http://maps\.googleapis\.com/map(?:files/lib/map_\d+_\d+\.swf|sapi/publicapi\?file=flashapi)" />
41+ <target host="maps.gstatic.com" />
42+
43+
44+ <!--securecookie host="^maps\.google\.(com?\.)?(au|ca|gh|ie|in|jm|ke|lk|my|n[agz]|pk|rw|sl|sg|ug|uk|za|zw)$" name=".+" /-->
45+ <securecookie host="^maps\.google\.[\w.]{2,6}$" name=".+" />
46+ <securecookie host="^maps\.g(?:oogle|oogleapis|static)\.com$" name=".+" />
47+ <securecookie host="^maps-api-ssl\.google\.com$" name=".+" />
48+
49+
50+ <rule from="^http://maps\.google\.([^/]+)/"
51+ to="https://maps.google.$1/" />
52+
53+ <!-- http://khms.../$ 404s:
54+ -->
55+ <rule from="^http://khms\d?\.google\.com/+\??$"
56+ to="https://www.google.com/" />
57+
58+ <rule from="^http://(khms\d?|maps-api-ssl|mw2)\.google\.com/"
59+ to="https://$1.google.com/" />
60+
61+ <rule from="^http://maps\.g(oogleapis|static)\.com/"
62+ to="https://maps.g$1.com/" />
63+
64+ <rule from="^https://maps\.googleapis\.com/map(?=files/lib/map_\d+_\d+\.swf|sapi/publicapi\?file=flashapi)"
65+ to="http://maps.googleapis.com/map" downgrade="1" />
66+
67+</ruleset>
searx/https_rules/GoogleMelange.xmlnew file+6
@@ -0,0 +1,6 @@
1+<ruleset name="GoogleMelange">
2+ <target host="www.google-melange.com" />
3+ <target host="google-melange.com" />
4+
5+ <rule from="^http://(www\.)?google-melange\.com/" to="https://www.google-melange.com/" />
6+</ruleset>
searx/https_rules/GoogleSearch.xmlnew file+135
@@ -0,0 +1,135 @@
1+<ruleset name="Google Search">
2+
3+ <target host="google.com" />
4+ <target host="*.google.com" />
5+ <target host="google.com.*" />
6+ <target host="www.google.com.*" />
7+ <target host="google.co.*" />
8+ <target host="www.google.co.*" />
9+ <target host="google.*" />
10+ <target host="www.google.*" />
11+ <!--
12+ Beyond clients1 these do not currently
13+ exist in the ccTLDs, but just in case...
14+ -->
15+ <target host="clients1.google.com.*" />
16+ <target host="clients2.google.com.*" />
17+ <target host="clients3.google.com.*" />
18+ <target host="clients4.google.com.*" />
19+ <target host="clients5.google.com.*" />
20+ <target host="clients6.google.com.*" />
21+ <target host="clients1.google.co.*" />
22+ <target host="clients2.google.co.*" />
23+ <target host="clients3.google.co.*" />
24+ <target host="clients4.google.co.*" />
25+ <target host="clients5.google.co.*" />
26+ <target host="clients6.google.co.*" />
27+ <target host="clients1.google.*" />
28+ <target host="clients2.google.*" />
29+ <target host="clients3.google.*" />
30+ <target host="clients4.google.*" />
31+ <target host="clients5.google.*" />
32+ <target host="clients6.google.*" />
33+
34+
35+ <!-- Some Google pages can generate naive links back to the
36+ unencrypted version of encrypted.google.com, which is
37+ a 301 but theoretically vulnerable to SSL stripping.
38+ -->
39+ <rule from="^http://encrypted\.google\.com/"
40+ to="https://encrypted.google.com/" />
41+
42+ <!-- The most basic case.
43+ -->
44+ <rule from="^http://(?:www\.)?google\.com/search"
45+ to="https://encrypted.google.com/search" />
46+
47+ <!-- A very annoying exception that we
48+ seem to need for the basic case
49+ -->
50+ <exclusion pattern="^http://(?:www\.)?google\.com/search.*tbs=shop" />
51+ <exclusion pattern="^http://clients\d\.google\.com/.*client=products.*" />
52+ <exclusion pattern="^http://suggestqueries\.google\.com/.*client=.*" />
53+
54+ <!-- https://trac.torproject.org/projects/tor/ticket/9713
55+ -->
56+
57+ <exclusion pattern="^http://clients[0-9]\.google\.com/ocsp" />
58+
59+
60+ <!-- This is necessary for image results
61+ links from web search results
62+ -->
63+ <exclusion pattern="^http://(?:www\.)?google\.com/search.*tbm=isch.*" />
64+
65+ <rule from="^http://(?:www\.)?google\.com/about"
66+ to="https://www.google.com/about" />
67+
68+ <!-- There are two distinct cases for these firefox searches -->
69+
70+ <rule from="^http://(?:www\.)?google(?:\.com?)?\.[a-z]{2}/firefox/?$"
71+ to="https://encrypted.google.com/" />
72+
73+ <rule from="^http://(?:www\.)?google(?:\.com?)?\.[a-z]{2}/firefox"
74+ to="https://encrypted.google.com/webhp" />
75+
76+ <rule from="^http://(?:www\.)?google\.com/webhp"
77+ to="https://encrypted.google.com/webhp" />
78+
79+ <rule from="^http://codesearch\.google\.com/"
80+ to="https://codesearch.google.com/" />
81+
82+ <rule from="^http://(?:www\.)?google\.com/codesearch"
83+ to="https://www.google.com/codesearch" />
84+
85+ <rule from="^http://(?:www\.)?google\.com/#"
86+ to="https://encrypted.google.com/#" />
87+
88+ <rule from="^http://(?:www\.)?google\.com/$"
89+ to="https://encrypted.google.com/" />
90+
91+ <!-- Google supports IPv6 search, including
92+ HTTPS with a valid certificate! -->
93+ <rule from="^http://ipv6\.google\.com/"
94+ to="https://ipv6.google.com/" />
95+
96+ <!-- most google international sites look like
97+ "google.fr", some look like "google.co.jp",
98+ and some crazy ones like "google.com.au" -->
99+
100+ <rule from="^http://(www\.)?google(\.com?)?\.([a-z]{2})/(search\?|#)"
101+ to="https://$1google$2.$3/$4" />
102+
103+ <!-- Language preference setting -->
104+ <rule from="^http://(www\.)?google(\.com?)?\.([a-z]{2})/setprefs"
105+ to="https://$1google$2.$3/setprefs" />
106+
107+ <!-- Completion urls look like this:
108+
109+http://clients2.google.co.jp/complete/search?hl=ja&client=hp&expIds=17259,24660,24729,24745&q=m&cp=1 HTTP/1.1\r\n
110+
111+ -->
112+ <rule from="^http://clients\d\.google\.com/complete/search"
113+ to="https://clients1.google.com/complete/search" />
114+
115+ <rule from="^http://clients\d\.google(\.com?\.[a-z]{2})/complete/search"
116+ to="https://clients1.google.$1/complete/search" />
117+
118+ <rule from="^http://clients\d\.google\.([a-z]{2})/complete/search"
119+ to="https://clients1.google.$1/complete/search" />
120+
121+ <rule from="^http://suggestqueries\.google\.com/complete/search"
122+ to="https://clients1.google.com/complete/search" />
123+
124+ <rule from="^http://(www\.)?google\.(com?\.)?([a-z]{2})/(?:webhp)?$"
125+ to="https://$1google.$2$3/" />
126+
127+ <!-- If there are URL parameters, keep them. -->
128+ <rule from="^http://(www\.)?google\.(com?\.)?([a-z]{2})/(?:webhp)?\?"
129+ to="https://$1google.$2$3/webhp?" />
130+
131+ <!-- teapot -->
132+ <rule from="^http://(www\.)?google(\.com?)?\.([a-z]{2})/teapot"
133+ to="https://$1google$2.$3/teapot" />
134+
135+</ruleset>
searx/https_rules/GoogleServices.xmlnew file+345
@@ -0,0 +1,345 @@
1+<!--
2+ Other Google rulesets:
3+
4+ - 2mdn.net.xml
5+ - Admeld.xml
6+ - ChannelIntelligence.com.xml
7+ - Doubleclick.net.xml
8+ - FeedBurner.xml
9+ - Google.org.xml
10+ - GoogleAPIs.xml
11+ - Google_App_Engine.xml
12+ - GoogleImages.xml
13+ - GoogleShopping.xml
14+ - Ingress.xml
15+ - Meebo.xml
16+ - Orkut.xml
17+ - Postini.xml
18+ - WebM_Project.org.xml
19+
20+
21+ Nonfunctional domains:
22+
23+ - feedproxy.google.com (404, valid cert)
24+ - partnerpage.google.com *
25+ - safebrowsing.clients.google.com (404, mismatched)
26+ - (www.)googlesyndicatedsearch.com (404; mismatched, CN: google.com)
27+ - buttons.googlesyndication.com *
28+
29+ * 404, valid cert
30+
31+
32+ Nonfunctional google.com paths:
33+
34+ - analytics (redirects to http)
35+ - imgres
36+ - gadgets *
37+ - hangouts (404)
38+ - u/ (404)
39+
40+ * Redirects to http
41+
42+
43+ Problematic domains:
44+
45+ - www.goo.gl (404; mismatched, CN: *.google.com)
46+
47+ - google.com subdomains:
48+
49+ - books (googlebooks/, images/, & intl/ 404, but works when rewritten to www)
50+ - cbks0 ****
51+ - earth *
52+ - gg ($ 404s)
53+ - knoll *
54+ - scholar **
55+ - trends *
56+
57+ - news.google.cctld **
58+ - scholar.google.cctld **
59+ - *-opensocial.googleusercontent.com ***
60+
61+ **** $ 404s
62+ * 404, valid cert
63+ ** Redirects to http, valid cert
64+ *** Breaks followers widget - https://trac.torproject.org/projects/tor/ticket/7294
65+
66+
67+ Partially covered domains:
68+
69+ - google.cctld subdomains:
70+
71+ - scholar (→ www)
72+
73+ - google.com subdomains:
74+
75+ - (www.)
76+ - cbks0 ($ 404s)
77+ - gg ($ 404s)
78+ - news (→ www)
79+ - scholar (→ www)
80+
81+ - *.googleusercontent.com (*-opensocial excluded)
82+
83+
84+ Fully covered domains:
85+
86+ - lh[3-6].ggpht.com
87+ - (www.)goo.gl (www → ^)
88+
89+ - google.com subdomains:
90+
91+ - accounts
92+ - adwords
93+ - apis
94+ - appengine
95+ - books (→ encrypted)
96+ - calendar
97+ - checkout
98+ - chrome
99+ - clients[12]
100+ - code
101+ - *.corp
102+ - developers
103+ - dl
104+ - docs
105+ - docs\d
106+ - \d.docs
107+ - drive
108+ - earth (→ www)
109+ - encrypted
110+ - encrypted-tbn[123]
111+ - feedburner
112+ - fiber
113+ - finance
114+ - glass
115+ - groups
116+ - health
117+ - helpouts
118+ - history
119+ - hostedtalkgadget
120+ - id
121+ - investor
122+ - knol
123+ - knoll (→ knol)
124+ - lh\d
125+ - mail
126+ - chatenabled.mail
127+ - pack
128+ - picasaweb
129+ - pki
130+ - play
131+ - plus
132+ - plusone
133+ - productforums
134+ - profiles
135+ - safebrowsing-cache
136+ - cert-test.sandbox
137+ - plus.sandbox
138+ - sb-ssl
139+ - script
140+ - security
141+ - services
142+ - servicessites
143+ - sites
144+ - spreadsheets
145+ - spreadsheets\d
146+ - support
147+ - talk
148+ - talkgadget
149+ - tbn2 (→ encrypted-tbn2)
150+ - tools
151+ - trends (→ www)
152+
153+ - partner.googleadservices.com
154+ - (www.)googlecode.com
155+ - *.googlecode.com (per-project subdomains)
156+ - googlesource.com
157+ - *.googlesource.com
158+ - pagead2.googlesyndication.com
159+ - tpc.googlesyndication.com
160+ - mail-attachment.googleusercontent.com
161+ - webcache.googleusercontent.com
162+
163+
164+ XXX: Needs more testing
165+
166+-->
167+<ruleset name="Google Services">
168+
169+ <target host="*.ggpht.com" />
170+ <target host="gmail.com" />
171+ <target host="www.gmail.com" />
172+ <target host="goo.gl" />
173+ <target host="www.goo.gl" />
174+ <target host="google.*" />
175+ <target host="accounts.google.*" />
176+ <target host="adwords.google.*" />
177+ <target host="finance.google.*" />
178+ <target host="groups.google.*" />
179+ <target host="it.google.*" />
180+ <target host="news.google.*" />
181+ <exclusion pattern="^http://(?:news\.)?google\.com/(?:archivesearch|newspapers)" />
182+ <target host="picasaweb.google.*" />
183+ <target host="scholar.google.*" />
184+ <target host="www.google.*" />
185+ <target host="*.google.ca" />
186+ <target host="google.co.*" />
187+ <target host="accounts.google.co.*" />
188+ <target host="adwords.google.co.*" />
189+ <target host="finance.google.co.*" />
190+ <target host="groups.google.co.*" />
191+ <target host="id.google.co.*" />
192+ <target host="news.google.co.*" />
193+ <target host="picasaweb.google.co.*" />
194+ <target host="scholar.google.co.*" />
195+ <target host="www.google.co.*" />
196+ <target host="google.com" />
197+ <target host="*.google.com" />
198+ <exclusion pattern="^http://(?:www\.)?google\.com/analytics/*(?:/[^/]+)?(?:\?.*)?$" />
199+ <!--exclusion pattern="^http://books\.google\.com/(?!books/(\w+\.js|css/|javascript/)|favicon\.ico|googlebooks/|images/|intl/)" /-->
200+ <exclusion pattern="^http://cbks0\.google\.com/(?:$|\?)" />
201+ <exclusion pattern="^http://gg\.google\.com/(?!csi(?:$|\?))" />
202+ <target host="google.com.*" />
203+ <target host="accounts.google.com.*" />
204+ <target host="adwords.google.com.*" />
205+ <target host="groups.google.com.*" />
206+ <target host="id.google.com.*" />
207+ <target host="news.google.com.*" />
208+ <target host="picasaweb.google.com.*" />
209+ <target host="scholar.google.com.*" />
210+ <target host="www.google.com.*" />
211+ <target host="partner.googleadservices.com" />
212+ <target host="googlecode.com" />
213+ <target host="*.googlecode.com" />
214+ <target host="googlemail.com" />
215+ <target host="www.googlemail.com" />
216+ <target host="googlesource.com" />
217+ <target host="*.googlesource.com" />
218+ <target host="*.googlesyndication.com" />
219+ <target host="www.googletagservices.com" />
220+ <target host="googleusercontent.com" />
221+ <target host="*.googleusercontent.com" />
222+ <!--
223+ Necessary for the Followers widget:
224+
225+ https://trac.torproject.org/projects/tor/ticket/7294
226+ -->
227+ <exclusion pattern="http://[^@:\./]+-opensocial\.googleusercontent\.com" />
228+
229+
230+ <!-- Can we secure any of these wildcard cookies safely?
231+ -->
232+ <!--securecookie host="^\.google\.com$" name="^(hl|I4SUserLocale|NID|PREF|S)$" /-->
233+ <!--securecookie host="^\.google\.[\w.]{2,6}$" name="^(hl|I4SUserLocale|NID|PREF|S|S_awfe)$" /-->
234+ <securecookie host="^(?:accounts|adwords|\.code|login\.corp|developers|docs|\d\.docs|fiber|mail|picasaweb|plus|\.?productforums|support)\.google\.[\w.]{2,6}$" name=".+" />
235+ <securecookie host="^www\.google\.com$" name="^GoogleAccountsLocale_session$" />
236+ <securecookie host="^mail-attachment\.googleusercontent\.com$" name=".+" />
237+ <securecookie host="^gmail\.com$" name=".+" />
238+ <securecookie host="^www\.gmail\.com$" name=".+" />
239+ <securecookie host="^googlemail\.com$" name=".+" />
240+ <securecookie host="^www\.googlemail\.com$" name=".+" />
241+
242+
243+ <!-- - lh 3-6 exist
244+ - All appear identical
245+ - Identical to lh\d.googleusercontent.com
246+ -->
247+ <rule from="^http://lh(\d)\.ggpht\.com/"
248+ to="https://lh$1.ggpht.com/" />
249+
250+ <rule from="^http://lh(\d)\.google\.ca/"
251+ to="https://lh$1.google.ca/" />
252+
253+
254+ <rule from="^http://(www\.)?g(oogle)?mail\.com/"
255+ to="https://$1g$2mail.com/" />
256+
257+ <rule from="^http://(?:www\.)?goo\.gl/"
258+ to="https://goo.gl/" />
259+
260+
261+ <!-- Redirects to http when rewritten to www:
262+ -->
263+ <rule from="^http://books\.google\.com/"
264+ to="https://encrypted.google.com/" />
265+
266+ <!-- tisp$ 404s:
267+ -->
268+ <rule from="^http://(?:www\.)?google\.((?:com?\.)?\w{2,3})/tisp(?=$|\?)"
269+ to="https://www.google.$1/tisp/" />
270+
271+ <!-- Paths that work on all in google.*
272+ -->
273+ <rule from="^http://(?:www\.)?google\.((?:com?\.)?\w{2,3})/(accounts|adplanner|ads|adsense|adwords|analytics|bookmarks|chrome|contacts|coop|cse|css|culturalinstitute|doodles|earth|favicon\.ico|finance|get|goodtoknow|googleblogs|grants|green|hostednews|images|intl|js|landing|logos|mapmaker|newproducts|news|nexus|patents|policies|prdhp|profiles|products|reader|s2|settings|shopping|support|tisp|tools|transparencyreport|trends|urchin|webmasters)(?=$|[?/])"
274+ to="https://www.google.$1/$2" />
275+
276+ <!-- Paths that 404 on .ccltd, but work on .com:
277+ -->
278+ <rule from="^http://(?:www\.)?google\.(?:com?\.)?\w{2,3}/(?=calendar|dictionary|doubleclick|help|ideas|pacman|postini|powermeter|url)"
279+ to="https://www.google.com/" />
280+
281+ <rule from="^http://(?:www\.)?google\.(?:com?\.)?\w{2,3}/custom"
282+ to="https://www.google.com/cse" />
283+
284+ <!-- Paths that only exist/work on .com
285+ -->
286+ <rule from="^http://(?:www\.)?google\.com/(\+|appsstatus|books|buzz|extern_js|glass|googlebooks|ig|insights|moderator|phone|safebrowsing|videotargetting|webfonts)(?=$|[?/])"
287+ to="https://www.google.com/$1" />
288+
289+ <!-- Subdomains that work on all in google.*
290+ -->
291+ <rule from="^http://(accounts|adwords|finance|groups|id|picasaweb|)\.google\.((?:com?\.)?\w{2,3})/"
292+ to="https://$1.google.$2/" />
293+
294+ <!-- Subdomains that only exist/work on .com
295+ -->
296+ <rule from="^http://(apis|appengine|books|calendar|cbks0|chat|checkout|chrome|clients[12]|code|[\w-]+\.corp|developers|dl|docs\d?|\d\.docs|drive|encrypted|encrypted-tbn[123]|feedburner|fiber|fonts|gg|glass||health|helpouts|history|(?:hosted)?talkgadget|investor|lh\d|(?:chatenabled\.)?mail|pack|pki|play|plus(?:\.sandbox)?|plusone|productforums|profiles|safebrowsing-cache|cert-test\.sandbox|sb-ssl|script|security|services|servicessites|sites|spreadsheets\d?|support|talk|tools)\.google\.com/"
297+ to="https://$1.google.com/" />
298+
299+ <exclusion pattern="^http://clients[0-9]\.google\.com/ocsp"/>
300+
301+ <rule from="^http://earth\.google\.com/"
302+ to="https://www.google.com/earth/" />
303+
304+ <rule from="^http://scholar\.google\.((?:com?\.)?\w{2,3})/intl/"
305+ to="https://www.google.$1/intl/" />
306+
307+ <rule from="^http://(?:encrypted-)?tbn2\.google\.com/"
308+ to="https://encrypted-tbn2.google.com/" />
309+
310+
311+ <rule from="^http://knoll?\.google\.com/"
312+ to="https://knol.google.com/" />
313+
314+
315+ <rule from="^http://news\.google\.(?:com?\.)?\w{2,3}/(?:$|news|newshp)"
316+ to="https://www.google.com/news" />
317+
318+ <rule from="^http://trends\.google\.com/"
319+ to="https://www.google.com/trends" />
320+
321+
322+ <rule from="^http://([^/:@\.]+\.)?googlecode\.com/"
323+ to="https://$1googlecode.com/" />
324+
325+ <rule from="^http://([^\./]\.)?googlesource\.com/"
326+ to="https://$1googlesource.com/" />
327+
328+
329+ <rule from="^http://partner\.googleadservices\.com/"
330+ to="https://partner.googleadservices.com/" />
331+
332+ <rule from="^http://(pagead2|tpc)\.googlesyndication\.com/"
333+ to="https://$1.googlesyndication.com/" />
334+
335+ <!-- !www doesn't exist.
336+ -->
337+ <rule from="^http://www\.googletagservices\.com/tag/js/"
338+ to="https://www.googletagservices.com/tag/js/" />
339+
340+
341+ <rule from="^http://([^@:\./]+)\.googleusercontent\.com/"
342+ to="https://$1.googleusercontent.com/" />
343+
344+
345+</ruleset>
searx/https_rules/GoogleShopping.xmlnew file+28
@@ -0,0 +1,28 @@
1+<!--
2+ For other Google coverage, see GoogleServices.xml.
3+
4+-->
5+<ruleset name="Google Shopping">
6+
7+ <target host="google.*" />
8+ <target host="www.google.*" />
9+ <target host="google.co.*" />
10+ <target host="www.google.co.*" />
11+ <target host="*.google.com" />
12+ <target host="google.com.*" />
13+ <target host="www.google.com.*" />
14+
15+
16+ <rule from="^http://encrypted\.google\.com/(prdhp|shopping)"
17+ to="https://www.google.com/$1" />
18+
19+ <rule from="^http://shopping\.google\.com/"
20+ to="https://shopping.google.com/" />
21+
22+ <rule from="^http://(?:encrypted|www)\.google\.com/(.*tbm=shop)"
23+ to="https://www.google.com/$1" />
24+
25+ <rule from="^http://(?:www\.)?google\.((?:com?\.)?(?:ae|ar|at|au|bg|bh|bo|br|ca|ch|cl|cr|co|cu|de|ec|eg|es|fi|fr|gh|gt|hr|id|ie|il|in|it|jm|jo|jp|ke|kr|kw|kz|lb|lk|ly|mx|my|na|ng|nl|no|nz|om|pa|pe|pk|pl|pt|py|qa|ro|ru|rw|sa|sg|sl|se|sv|th|tr|ug|uk|uy|ve|vn|za|zw))/(?=prdhp|shopping)"
26+ to="https://www.google.com/$1" />
27+
28+</ruleset>
searx/https_rules/GoogleSorry.xmlnew file+7
@@ -0,0 +1,7 @@
1+<ruleset name="GoogleSorry">
2+ <target host="sorry.google.com" />
3+ <target host="www.google.com" />
4+ <target host="google.com" />
5+
6+ <rule from="^http://((sorry|www)\.)?google\.com/sorry/" to="https://sorry.google.com/sorry/" />
7+</ruleset>
searx/https_rules/GoogleTranslate.xmlnew file+8
@@ -0,0 +1,8 @@
1+<ruleset name="Google Translate (broken)" default_off="redirect loops">
2+ <target host="translate.googleapis.com" />
3+ <target host="translate.google.com" />
4+
5+ <rule from="^http://translate\.googleapis\.com/" to="https://translate.googleapis.com/"/>
6+ <rule from="^http://translate\.google\.com/"
7+ to="https://translate.google.com/" />
8+</ruleset>
searx/https_rules/GoogleVideos.xmlnew file+83
@@ -0,0 +1,83 @@
1+<ruleset name="Google Videos">
2+ <target host="*.google.com" />
3+ <target host="google.com" />
4+ <target host="www.google.com.*" />
5+ <target host="google.com.*" />
6+ <target host="www.google.co.*" />
7+ <target host="google.co.*" />
8+ <target host="www.google.*" />
9+ <target host="google.*" />
10+
11+ <rule from="^http://encrypted\.google\.com/videohp"
12+ to="https://encrypted.google.com/videohp" />
13+
14+ <!-- https://videos.google.com is currently broken; work around that... -->
15+ <rule from="^https?://videos?\.google\.com/$"
16+ to="https://encrypted.google.com/videohp" />
17+ <rule from="^http://(?:www\.)?google\.com/videohp"
18+ to="https://encrypted.google.com/videohp" />
19+ <rule from="^http://(?:images|www|encrypted)\.google\.com/(.*tbm=isch)"
20+ to="https://encrypted.google.com/$1" />
21+
22+ <rule
23+ from="^http://(?:www\.)?google\.(?:com?\.)?(?:au|ca|gh|ie|in|jm|ke|lk|my|na|ng|nz|pk|rw|sl|sg|ug|uk|za|zw)/videohp"
24+ to="https://encrypted.google.com/videohp" />
25+ <rule
26+ from="^http://(?:www\.)?google\.(?:com?\.)?(?:ar|bo|cl|co|cu|cr|ec|es|gt|mx|pa|pe|py|sv|uy|ve)/videohp$"
27+ to="https://encrypted.google.com/videohp?hl=es" />
28+ <rule
29+ from="^http://(?:www\.)?google\.(?:com\.)?(?:ae|bh|eg|jo|kw|lb|ly|om|qa|sa)/videohp$"
30+ to="https://encrypted.google.com/videohp?hl=ar" />
31+ <rule from="^http://(?:www\.)?google\.(?:at|ch|de)/videohp$"
32+ to="https://encrypted.google.com/videohp?hl=de" />
33+ <rule from="^http://(?:www\.)?google\.(fr|nl|it|pl|ru|bg|pt|ro|hr|fi|no)/videohp$"
34+ to="https://encrypted.google.com/videohp?hl=$1" />
35+ <rule from="^http://(?:www\.)?google\.com?\.(id|th|tr)/videohp$"
36+ to="https://encrypted.google.com/videohp?hl=$1" />
37+ <rule from="^http://(?:www\.)?google\.com\.il/videohp$"
38+ to="https://encrypted.google.com/videohp?hl=he" />
39+ <rule from="^http://(?:www\.)?google\.com\.kr/videohp$"
40+ to="https://encrypted.google.com/videohp?hl=ko" />
41+ <rule from="^http://(?:www\.)?google\.com\.kz/videohp$"
42+ to="https://encrypted.google.com/videohp?hl=kk" />
43+ <rule from="^http://(?:www\.)?google\.com\.jp/videohp$"
44+ to="https://encrypted.google.com/videohp?hl=ja" />
45+ <rule from="^http://(?:www\.)?google\.com\.vn/videohp$"
46+ to="https://encrypted.google.com/videohp?hl=vi" />
47+ <rule from="^http://(?:www\.)?google\.com\.br/videohp$"
48+ to="https://encrypted.google.com/videohp?hl=pt-BR" />
49+ <rule from="^http://(?:www\.)?google\.se/videohp$"
50+ to="https://encrypted.google.com/videohp?hl=sv" />
51+
52+<!-- If there are URL parameters, keep them. -->
53+ <rule
54+ from="^http://(?:www\.)?google\.(?:com?\.)?(?:ar|bo|cl|co|cu|cr|ec|es|gt|mx|pa|pe|py|sv|uy|ve)/videohp\?"
55+ to="https://encrypted.google.com/videohp?hl=es&#38;" />
56+ <rule
57+ from="^http://(?:www\.)?google\.(?:com\.)?(?:ae|bh|eg|jo|kw|lb|ly|om|qa|sa)/videohp\?"
58+ to="https://encrypted.google.com/videohp?hl=ar&#38;" />
59+ <rule from="^http://(?:www\.)?google\.(?:at|ch|de)/videohp\?"
60+ to="https://encrypted.google.com/videohp?hl=de&#38;" />
61+ <rule from="^http://(?:www\.)?google\.(fr|nl|it|pl|ru|bg|pt|ro|hr|fi|no)/videohp\?"
62+ to="https://encrypted.google.com/videohp?hl=$1&#38;" />
63+ <rule from="^http://(?:www\.)?google\.com?\.(id|th|tr)/videohp\?"
64+ to="https://encrypted.google.com/videohp?hl=$1&#38;" />
65+ <rule from="^http://(?:www\.)?google\.com\.il/videohp\?"
66+ to="https://encrypted.google.com/videohp?hl=he&#38;" />
67+ <rule from="^http://(?:www\.)?google\.com\.kr/videohp\?"
68+ to="https://encrypted.google.com/videohp?hl=ko&#38;" />
69+ <rule from="^http://(?:www\.)?google\.com\.kz/videohp\?"
70+ to="https://encrypted.google.com/videohp?hl=kk&#38;" />
71+ <rule from="^http://(?:www\.)?google\.com\.jp/videohp\?"
72+ to="https://encrypted.google.com/videohp?hl=ja&#38;" />
73+ <rule from="^http://(?:www\.)?google\.com\.vn/videohp\?"
74+ to="https://encrypted.google.com/videohp?hl=vi&#38;" />
75+ <rule from="^http://(?:www\.)?google\.com\.br/videohp\?"
76+ to="https://encrypted.google.com/videohp?hl=pt-BR&#38;" />
77+ <rule from="^http://(?:www\.)?google\.se/videohp\?"
78+ to="https://encrypted.google.com/videohp?hl=sv&#38;" />
79+
80+ <rule from="^http://video\.google\.com/ThumbnailServer2"
81+ to="https://video.google.com/ThumbnailServer2" />
82+
83+</ruleset>
searx/https_rules/GoogleWatchBlog.xmlnew file+17
@@ -0,0 +1,17 @@
1+<!--
2+ gwbhrd.appspot.com
3+
4+-->
5+<ruleset name="GoogleWatchBlog">
6+
7+ <target host="googlewatchblog.de" />
8+ <target host="*.googlewatchblog.de" />
9+
10+
11+ <securecookie host="^(?:www)?\.googlewatchblog\.de$" name=".+" />
12+
13+
14+ <rule from="^http://(static\.|www\.)?googlewatchblog\.de/"
15+ to="https://$1googlewatchblog.de/" />
16+
17+</ruleset>
searx/https_rules/Google_App_Engine.xmlnew file+21
@@ -0,0 +1,21 @@
1+<!--
2+ For other Google coverage, see GoogleServices.xml.
3+
4+-->
5+<ruleset name="Google App Engine">
6+
7+ <target host="appspot.com" />
8+ <target host="*.appspot.com" />
9+ <!--
10+ Redirects to http for some reason.
11+ -->
12+ <exclusion pattern="^http://photomunchers\.appspot\.com/" />
13+
14+
15+ <securecookie host="^.+\.appspot\.com$" name=".+" />
16+
17+
18+ <rule from="^http://([^@:\./]+\.)?appspot\.com/"
19+ to="https://$1appspot.com/" />
20+
21+</ruleset>
searx/https_rules/Googleplex.com.xmlnew file+16
@@ -0,0 +1,16 @@
1+<!-- This rule was automatically generated based on an HSTS
2+ preload rule in the Chromium browser. See
3+ https://src.chromium.org/viewvc/chrome/trunk/src/net/base/transport_security_state.cc
4+ for the list of preloads. Sites are added to the Chromium HSTS
5+ preload list on request from their administrators, so HTTPS should
6+ work properly everywhere on this site.
7+
8+ Because Chromium and derived browsers automatically force HTTPS for
9+ every access to this site, this rule applies only to Firefox. -->
10+<ruleset name="Googleplex.com (default off)" platform="firefox" default_off="Certificate error">
11+ <target host="googleplex.com" />
12+
13+ <securecookie host="^googleplex\.com$" name=".+" />
14+
15+ <rule from="^http://googleplex\.com/" to="https://googleplex.com/" />
16+</ruleset>
searx/https_rules/OpenStreetMap.xmlnew file+15
@@ -0,0 +1,15 @@
1+<ruleset name="OpenStreetMap">
2+
3+ <target host="openstreetmap.org"/>
4+ <target host="*.openstreetmap.org"/>
5+
6+ <rule from="^http://(?:www\.)?openstreetmap\.org/"
7+ to="https://www.openstreetmap.org/"/>
8+
9+ <rule from="^http://tile\.openstreetmap\.org/"
10+ to="https://a.tile.openstreetmap.org/"/>
11+
12+ <rule from="^http://(blog|help|lists|nominatim|piwik|taginfo|[abc]\.tile|trac|wiki)\.openstreetmap\.org/"
13+ to="https://$1.openstreetmap.org/"/>
14+
15+</ruleset>
searx/https_rules/Rawgithub.com.xmlnew file+14
@@ -0,0 +1,14 @@
1+<!--
2+ www: cert only matches ^rawgithub.com
3+
4+-->
5+<ruleset name="rawgithub.com">
6+
7+ <target host="rawgithub.com" />
8+ <target host="www.rawgithub.com" />
9+
10+
11+ <rule from="^http://(?:www\.)?rawgithub\.com/"
12+ to="https://rawgithub.com/" />
13+
14+</ruleset>
searx/https_rules/Soundcloud.xmlnew file+101
@@ -0,0 +1,101 @@
1+<!--
2+
3+ CDN buckets:
4+
5+ - akmedia-a.akamaihd.net
6+
7+ - soundcloud.assistly.com
8+
9+ - help.soundcloud.com
10+
11+ - cs70.wac.edgecastcdn.net
12+
13+ - a1.sndcdn.com
14+ - i1.sndcdn.com
15+ - w1.sndcdn.com
16+
17+ - wpc.658D.edgecastcdn.net
18+ - m-a.sndcdn.com.edgesuite.net
19+ - soundcloud.gettyimages.com
20+
21+ - scbackstage.wpengine.netdna-cdn.com
22+
23+ - ssl doesn't exist
24+ - backstage.soundcloud.com
25+
26+ - soundcloud.wpengine.netdna-cdn.com
27+
28+ - -ssl doesn't exist
29+ - blog.soundcloud.com
30+
31+ - gs1.wpc.v2cdn.netcdn.net
32+ - gs1.wpc.v2cdn.net
33+
34+ - ec-media.soundcloud.com
35+
36+ Nonfunctional soundcloud.com subdomains:
37+
38+ - help (redirects to http, mismatched, CN: *.assistly.com)
39+ - m (redirects to http)
40+ - media
41+ - status (times out)
42+
43+
44+ Problematic domains:
45+
46+ - m-a.sndcdn.com (works, akamai)
47+
48+
49+ Partially covered domains:
50+
51+ - backstage.soundcloud.com
52+
53+
54+ Fully covered domains:
55+
56+ - sndcdn.com subdomains:
57+
58+ - a[12]
59+ - api
60+ - i[1-4]
61+ - w[12]
62+ - wis
63+
64+ - soundcloud.com subdomains:
65+
66+ - (www.)
67+ - api
68+ - blog
69+ - connect
70+ - developers
71+ - ec-media
72+ - eventlogger
73+ - help-assets
74+ - media
75+ - visuals
76+ - w
77+
78+-->
79+<ruleset name="Soundcloud (partial)">
80+
81+ <target host="scbackstage.wpengine.netdna-cdn.com" />
82+ <target host="soundcloud.wpengine.netdna-cdn.com" />
83+ <target host="*.sndcdn.com" />
84+ <target host="soundcloud.com" />
85+ <target host="*.soundcloud.com" />
86+ <exclusion pattern="^https?://(?:scbackstage\.wpengine\.netdna-cdn|backstage\.soundcloud)\.com/(?!wp-content/)" />
87+
88+
89+ <rule from="^http://([aiw]\d|api|wis)\.sndcdn\.com/"
90+ to="https://$1.sndcdn.com/" />
91+
92+ <rule from="^http://((?:api|backstage|blog|connect|developers|ec-media|eventlogger|help-assets|media|visuals|w|www)\.)?soundcloud\.com/"
93+ to="https://$1soundcloud.com/" />
94+
95+ <rule from="^https?://scbackstage\.wpengine\.netdna-cdn\.com/"
96+ to="https://backstage.soundcloud.com/" />
97+
98+ <rule from="^https?://soundcloud\.wpengine\.netdna-cdn\.com/"
99+ to="https://blog.soundcloud.com/" />
100+
101+</ruleset>
searx/https_rules/ThePirateBay.xmlnew file+36
@@ -0,0 +1,36 @@
1+<!--
2+ Nonfunctional:
3+
4+ - image.bayimg.com
5+ - (www.)thepiratebay.sx (http reply)
6+
7+
8+ For problematic rules, see ThePirateBay-mismatches.xml.
9+
10+-->
11+<ruleset name="The Pirate Bay (partial)">
12+
13+ <target host="suprbay.org" />
14+ <target host="*.suprbay.org" />
15+ <!-- * for cross-domain cookie -->
16+ <target host="*.forum.suprbay.org" />
17+ <target host="thepiratebay.org"/>
18+ <target host="*.thepiratebay.org"/>
19+ <target host="thepiratebay.se"/>
20+ <target host="*.thepiratebay.se"/>
21+
22+ <securecookie host="^.*\.suprbay\.org$" name=".*" />
23+ <securecookie host="^(.*\.)?thepiratebay\.se$" name=".*"/>
24+
25+
26+ <!-- Cert doesn't match (www.), redirects like so. -->
27+ <rule from="^https?://(?:forum\.|www\.)?suprbay\.org/"
28+ to="https://forum.suprbay.org/" />
29+
30+ <rule from="^http://(?:www\.)?thepiratebay\.(?:org|se)/"
31+ to="https://thepiratebay.se/"/>
32+
33+ <rule from="^http://(rss|static|torrents)\.thepiratebay\.(?:org|se)/"
34+ to="https://$1.thepiratebay.se/"/>
35+
36+</ruleset>
searx/https_rules/Torproject.xmlnew file+18
@@ -0,0 +1,18 @@
1+<ruleset name="Tor Project">
2+
3+ <target host="torproject.org" />
4+ <target host="*.torproject.org" />
5+ <exclusion pattern="^http://torperf\.torproject\.org/" />
6+
7+
8+ <!-- Not secured by server:
9+ -->
10+ <!--securecookie host="^\.blog\.torproject\.org$" name="^SESS[0-9a-f]{32}$" /-->
11+
12+ <securecookie host="^(?:.*\.)?torproject\.org$" name=".+" />
13+
14+
15+ <rule from="^http://([^/:@\.]+\.)?torproject\.org/"
16+ to="https://$1torproject.org/" />
17+
18+</ruleset>
searx/https_rules/Twitter.xmlnew file+169
@@ -0,0 +1,169 @@
1+<!--
2+ Other Twitter rulesets:
3+
4+ - Twitter_Community.com.xml
5+
6+
7+ Nonfunctional domains:
8+
9+ - status.twitter.com *
10+ - status.twitter.jp *
11+
12+ * Tumblr
13+
14+
15+ CDN buckets:
16+
17+ - a1095.g.akamai.net/=/1095/134446/1d/platform.twitter.com/ | platform2.twitter.com.edgesuite.net
18+
19+ - platform2.twitter.com
20+
21+ - twitter-any.s3.amazonaws.com
22+ - twitter-blog.s3.amazonaws.com
23+
24+ - d2rdfnizen5apl.cloudfront.net
25+
26+ - s.twimg.com
27+
28+ - ssl2.twitter.com.edgekey.net
29+ - twitter.github.com
30+
31+
32+ Problematic domains:
33+
34+ - twimg.com subdomains:
35+
36+ - a5 *
37+ - s (cloudfront)
38+
39+ - twitter.com subdomains:
40+
41+ - platform[0-3] (403, akamai)
42+
43+ * akamai
44+
45+
46+ Fully covered domains:
47+
48+ - (www.)t.co (www → ^)
49+
50+ - twimg.com subdomains:
51+
52+ - a[5-9] (→ si0)
53+ - a\d
54+ - abs
55+ - dnt
56+ - ea
57+ - g
58+ - g2
59+ - gu
60+ - hca
61+ - jp
62+ - ma
63+ - ma[0123]
64+ - o
65+ - p
66+ - pbs
67+ - r
68+ - s (→ d2rdfnizen5apl.cloudfront.net)
69+ - si[0-5]
70+ - syndication
71+ - cdn.syndication
72+ - tailfeather
73+ - ton
74+ - v
75+ - widgets
76+
77+ - twitter.com subdomains:
78+
79+ - (www.)
80+ - 201[012]
81+ - about
82+ - ads
83+ - analytics
84+ - api
85+ - cdn.api
86+ - urls.api
87+ - blog
88+ - business
89+ - preview.cdn
90+ - preview-dev.cdn
91+ - preview-stage.cdn
92+ - de
93+ - dev
94+ - en
95+ - engineering
96+ - es
97+ - firefox
98+ - fr
99+ - it
100+ - ja
101+ - jp
102+ - m
103+ - media
104+ - mobile
105+ - music
106+ - oauth
107+ - p
108+ - pic
109+ - platform
110+ - platform[0-3] (→ platform)
111+ - widgets.platform
112+ - search
113+ - static
114+ - support
115+ - transparency
116+ - upload
117+
118+
119+ These altnames don't exist:
120+
121+ - i3.twimg.com
122+ - p-dev.twimg.com
123+ - vmtc.twimg.com
124+
125+ - cdn-dev.api.twitter.com
126+
127+-->
128+<ruleset name="Twitter">
129+
130+ <target host="t.co" />
131+ <target host="*.t.co" />
132+ <target host="*.twimg.com" />
133+ <target host="twitter.com" />
134+ <target host="*.twitter.com" />
135+
136+
137+ <!-- Secured by server:
138+ -->
139+ <!--securecookie host="^\.twitter\.com$" name="^_twitter_sess$" /-->
140+ <!--securecookie host="^support\.twitter\.com$" name="^_help_center_session$" /-->
141+ <!--
142+ Not secured by server:
143+ -->
144+ <!--securecookie host="^\.t\.co$" name="^muc$" /-->
145+ <!--securecookie host="^\.twitter\.com$" name="^guest_id$" /-->
146+
147+ <securecookie host="^\.t\.co$" name=".+" />
148+ <securecookie host="^(?:.*\.)?twitter\.com$" name=".+" />
149+
150+
151+ <rule from="^http://(?:www\.)?t\.co/"
152+ to="https://t.co/" />
153+
154+ <rule from="^http://a[5-9]\.twimg\.com/"
155+ to="https://si0.twimg.com/" />
156+
157+ <rule from="^http://(abs|a\d|dnt|ea|g[2u]?|hca|jp|ma\d?|o|p|pbs|r|si\d|(?:cdn\.)?syndication|tailfeather|ton|v|widgets)\.twimg\.com/"
158+ to="https://$1.twimg.com/" />
159+
160+ <rule from="^http://s\.twimg\.com/"
161+ to="https://d2rdfnizen5apl.cloudfront.net/" />
162+
163+ <rule from="^http://((?:201\d|about|ads|analytics|blog|(?:cdn\.|urls\.)?api|business|preview(?:-dev|-stage)?\.cdn|de|dev|engineering|en|es|firefox|fr|it|ja|jp|m|media|mobile|music|oauth|p|pic|platform|widgets\.platform|search|static|support|transparency|upload|www)\.)?twitter\.com/"
164+ to="https://$1twitter.com/" />
165+
166+ <rule from="^http://platform\d\.twitter\.com/"
167+ to="https://platform.twitter.com/" />
168+
169+</ruleset>
searx/https_rules/Vimeo.xmlnew file+75
@@ -0,0 +1,75 @@
1+<!--
2+ CDN buckets:
3+
4+ - av.vimeo.com.edgesuite.net
5+
6+ - a808.g.akamai.net
7+
8+ - pdl.vimeocdn.com.edgesuite.net
9+
10+ - a1189.g.akamai.net
11+
12+
13+ Problematic subdomains:
14+
15+ - av (pdl.../crossdomain.xml restricts to port 80)
16+ - pdl (works, akamai)
17+
18+
19+ Partially covered subdomains:
20+
21+ - developer (some pages redirect to http)
22+ - pdl (→ akamai)
23+
24+
25+ Fully covered subdomains:
26+
27+ - (www.)
28+ - secure
29+
30+
31+Default off per https://trac.torproject.org/projects/tor/ticket/7569 -->
32+<ruleset name="Vimeo (default off)" default_off="breaks some video embedding">
33+
34+ <target host="vimeo.com" />
35+ <target host="*.vimeo.com" />
36+ <exclusion pattern="^http://av\.vimeo\.com/crossdomain\.xml" />
37+ <!--exclusion pattern="^http://developer\.vimeo\.com/($|\?|(apps|guidelines|help|player)($|[?/]))" /-->
38+ <exclusion pattern="^http://developer\.vimeo\.com/(?!apis(?:$|[?/])|favicon\.ico)" />
39+ <target host="*.vimeocdn.com" />
40+ <!--
41+ Uses crossdomain.xml from s3.amazonaws.com, which sets secure="false"
42+
43+ https://mail1.eff.org/pipermail/https-everywhere/2012-October/001583.html
44+ -->
45+ <exclusion pattern="^http://a\.vimeocdn\.com/p/flash/moogaloop/" />
46+
47+ <!-- We cannot secure streams because crossdomain.xml
48+ restricts to port 80 :(
49+ -->
50+ <exclusion pattern="^http://pdl\.vimeocdn\.com/(?!crossdomain\.xml)" />
51+
52+
53+ <!-- Tracking cookies:
54+ -->
55+ <securecookie host="^\.(?:player\.)?vimeo\.com$" name="^__utm\w$" />
56+
57+
58+ <rule from="^http://((?:developer|player|secure|www)\.)?vimeo\.com/"
59+ to="https://$1vimeo.com/" />
60+
61+ <rule from="^http://av\.vimeo\.com/"
62+ to="https://a248.e.akamai.net/f/808/9207/8m/av.vimeo.com/" />
63+
64+ <!-- a & b: Akamai -->
65+ <rule from="^http://(?:secure-)?([ab])\.vimeocdn\.com/"
66+ to="https://secure-$1.vimeocdn.com/" />
67+
68+ <rule from="^http://i\.vimeocdn\.com/"
69+ to="https://i.vimeocdn.com/" />
70+
71+ <rule from="^http://pdl\.vimeocdn\.com/"
72+ to="https://a248.e.akamai.net/f/1189/4415/8d/pdl.vimeocdn.com/" />
73+
74+</ruleset>
75+
searx/https_rules/WikiLeaks.xmlnew file+13
@@ -0,0 +1,13 @@
1+<ruleset name="WikiLeaks">
2+
3+ <target host="wikileaks.org" />
4+ <target host="*.wikileaks.org" />
5+
6+
7+ <securecookie host="^(?:w*\.)?wikileaks\.org$" name=".+" />
8+
9+
10+ <rule from="^http://((?:chat|search|shop|www)\.)?wikileaks\.org/"
11+ to="https://$1wikileaks.org/" />
12+
13+</ruleset>
searx/https_rules/Wikimedia.xmlnew file+107
@@ -0,0 +1,107 @@
1+<!--
2+ Wikipedia and other Wikimedia Foundation wikis previously had no real HTTPS support, and
3+ URLs had to be rewritten to https://secure.wikimedia.org/$wikitype/$language/ . This is no
4+ longer the case, see https://blog.wikimedia.org/2011/10/03/native-https-support-enabled-for-all-wikimedia-foundation-wikis/ ,
5+ so this file is a lot simpler these days.
6+
7+
8+ Mixed content:
9+
10+ - Images, on:
11+
12+ - stats.wikimedia.org from upload.wikimedia.org *
13+ - stats.wikimedia.org from wikimediafoundation.org *
14+
15+ * Secured by us
16+
17+-->
18+<ruleset name="Wikimedia">
19+
20+ <target host="enwp.org" />
21+ <target host="frwp.org" />
22+
23+ <target host="mediawiki.org" />
24+ <target host="www.mediawiki.org" />
25+ <target host="wikimedia.org" />
26+ <target host="*.wikimedia.org" />
27+ <exclusion pattern="^http://(?:apt|cs|cz|parsoid-lb\.eqiad|status|torrus|ubuntu)\.wikimedia\.org" />
28+ <!-- https://mail1.eff.org/pipermail/https-everywhere-rules/2012-June/001189.html -->
29+ <exclusion pattern="^http://lists\.wikimedia\.org/pipermail(?:$|/)" />
30+ <target host="wikimediafoundation.org" />
31+ <target host="www.wikimediafoundation.org" />
32+
33+ <!-- Wikimedia projects (also some wikimedia.org subdomains) -->
34+ <target host="wikibooks.org" />
35+ <target host="*.wikibooks.org" />
36+ <target host="wikidata.org" />
37+ <target host="*.wikidata.org" />
38+ <target host="wikinews.org" />
39+ <target host="*.wikinews.org" />
40+ <target host="wikipedia.org" />
41+ <target host="*.wikipedia.org" />
42+ <target host="wikiquote.org" />
43+ <target host="*.wikiquote.org" />
44+ <target host="wikisource.org" />
45+ <target host="*.wikisource.org" />
46+ <target host="wikiversity.org" />
47+ <target host="*.wikiversity.org" />
48+ <target host="wikivoyage.org" />
49+ <target host="*.wikivoyage.org" />
50+ <target host="wiktionary.org" />
51+ <target host="*.wiktionary.org" />
52+
53+ <!-- Wikimedia chapters -->
54+ <target host="wikimedia.ca" />
55+ <target host="www.wikimedia.ca" />
56+
57+ <!-- Wikimedia Tool Labs -->
58+ <target host="tools.wmflabs.org" />
59+ <target host="icinga.wmflabs.org" />
60+ <target host="ganglia.wmflabs.org" />
61+
62+ <!-- Not secured by server:
63+ -->
64+ <!--securecookie host="^\.wiki(books|ipedia)\.org$" name="^GeoIP$" /-->
65+
66+ <securecookie host="^^\.wik(?:ibooks|idata|imedia|inews|ipedia|iquote|isource|iversity|ivoyage|tionary)\.org$" name="^GeoIP$" />
67+ <securecookie host="^([^@:/]+\.)?wik(ibooks|idata|inews|ipedia|iquote|isource|iversity|ivoyage|tionary)\.org$" name=".*" />
68+ <securecookie host="^(species|commons|meta|incubator|wikitech).wikimedia.org$" name=".*" />
69+ <securecookie host="^(?:www\.)?mediawiki\.org$" name=".*" />
70+ <securecookie host="^wikimediafoundation.org$" name=".*" />
71+
72+ <rule from="^http://(en|fr)wp\.org/"
73+ to="https://$1.wikipedia.org/wiki/" />
74+
75+ <rule from="^http://(?:www\.)?mediawiki\.org/"
76+ to="https://www.mediawiki.org/" />
77+
78+ <rule from="^https?://download\.wikipedia\.org/"
79+ to="https://dumps.wikimedia.org/" />
80+
81+ <rule from="^https?://(download|dataset2|sitemap)\.wikimedia\.org/"
82+ to="https://dumps.wikimedia.org/" />
83+
84+ <rule from="^https?://(labs-ns[01]|virt0)\.wikimedia\.org/"
85+ to="https://wikitech.wikimedia.org/" />
86+
87+ <rule from="^https?://noboard\.chapters\.wikimedia\.org/"
88+ to="https://noboard-chapters.wikimedia.org/" />
89+
90+ <rule from="^https?://wg\.en\.wikipedia\.org/"
91+ to="https://wg-en.wikipedia.org/" />
92+
93+ <rule from="^https?://arbcom\.(de|en|fi|nl)\.wikipedia\.org/"
94+ to="https://arbcom-$1.wikipedia.org/" />
95+
96+ <rule from="^http://([^@:/]+\.)?wik(ibooks|idata|imedia|inews|ipedia|iquote|isource|iversity|ivoyage|tionary)\.org/"
97+ to="https://$1wik$2.org/" />
98+
99+ <rule from="^http://(www\.)?wikimediafoundation\.org/"
100+ to="https://$1wikimediafoundation.org/" />
101+
102+ <rule from="^http://(www\.)?wikimedia\.ca/"
103+ to="https://wikimedia.ca/" />
104+
105+ <rule from="^http://([^@:/]+)\.wmflabs\.org/"
106+ to="https://$1.wmflabs.org/" />
107+</ruleset>
searx/https_rules/Yahoo.xmlnew file+2450
@@ -0,0 +1,2450 @@
1+<!--
2+ Other Yahoo rulesets:
3+
4+ - Flickr.xml
5+ - Lexity.com.xml
6+ - Right-Media.xml
7+ - Yahoo.com.tw.xml
8+ - Yahoo.net.xml
9+ - Yahoo_APIs.xml
10+ - Yahoo_Japan.xml
11+ - Yho.com.xml
12+ - Yimg.com.xml
13+ - YUI_Library.xml
14+
15+
16+ CDN buckets:
17+
18+ - ipgcdn-a.akamaihd.net
19+ - yahootv.flyingfishes.com.br
20+ - yahoosports.teamfanshop.com
21+
22+
23+ Nonfunctional domains:
24+
25+ - yahoo.com subdomains:
26+
27+ - account ⁵
28+ - cn.adspecs ¹
29+ - tw.adspecs ¹
30+ - alerts ¹
31+
32+ - co.astrology ⁵
33+ - espanol.astrology ⁵
34+ - mx.astrology ⁵
35+
36+ - auction ¹
37+
38+ - biz subdomains:
39+
40+ - au.rss ¹
41+ - nz.rss ¹
42+
43+ - bookmarks ⁵
44+ - buzz ¹
45+
46+ - cn subdomains:
47+
48+ - ^ ¹
49+ - help ¹
50+ - news ¹
51+
52+ - docs subdomains:
53+
54+ - ^ ⁵
55+ - ar ⁵
56+ - fr ⁵
57+ - uk ⁵
58+
59+ - au.rss.food (403, valid cert)
60+ - au.forums ¹
61+ - ar.games ⁵
62+ - help.cc.hk ⁵
63+ - hsrd ¹
64+ - labs ¹
65+
66+ - lifestyle subdomains:
67+
68+ - tw.ipeen ¹
69+ - au.rss ³
70+ - nz.rss ³
71+ - tw ⁵
72+
73+ - cn.overview.mail ¹
74+
75+ - cf.maps (404; mismatched, CN: www.yahoo.com)
76+ - gws2.maps ¹
77+ - kr.mobile ⁵
78+ - tw.music ⁵
79+
80+ - my subdomains:
81+
82+ - ar ⁵
83+ - au ²
84+ - br ²
85+ - ca ²
86+ - de ²
87+ - es ²
88+ - fr ²
89+ - hk ²
90+ - ie ¹
91+ - in ²
92+ - it ²
93+ - kr ¹
94+ - mx ²
95+ - nz ²
96+ - qc ²
97+ - sg ²
98+ - tw ²
99+ - cm.tw ⁸
100+ - uk ²
101+
102+ - \w\w.news:
103+
104+ - cn ¹
105+ - kr ¹
106+ - se ¹
107+
108+ - opi ¹
109+ - au.pfinance ²
110+ - ar.rd ¹
111+ - research ¹
112+ - rightmedia (shows speakers.watersmartinnovations.com; mismatched, CN: *.watersmartinnovations.com)
113+
114+ - search subdomains:
115+
116+ - us.recipes ¹
117+ - gossip-ss.us ¹
118+
119+ - \w\w.yhs:
120+
121+ - ar ¹
122+ - au ¹
123+ - br ¹
124+ - ca ¹
125+ - de ¹
126+ - es ¹
127+ - fr ¹
128+ - hk ¹
129+ - in ¹
130+ - it ¹
131+ - kr ¹
132+ - mx ¹
133+ - my ¹
134+ - nz ¹
135+ - ph ¹
136+ - se ¹
137+ - sg ¹
138+ - tw ¹
139+ - uk ¹
140+ - us ¹
141+ - vn ¹
142+
143+ - searchmarketing ¹
144+ - au.shopping ⁹
145+ - es.shopping ⁵
146+ - suggestions ⁵
147+ - au.rss.thehype ³
148+
149+ - video subdomains:
150+
151+ - malaysia ¹
152+ - my ¹
153+ - ph ¹
154+ - sg ¹
155+ - tw ¹
156+
157+ - voices ⁵
158+ - cn.weather ¹
159+ - visit.webhosting ⁵
160+ - count.yisou ¹
161+
162+ - youth subdomains:
163+
164+ - au.rss ³
165+ - nz.rss ³
166+
167+ - ypolicyblog.com (reset)
168+ - www.ypolicyblog.com
169+
170+ ¹ Refused
171+ ² Redirects to http, valid cert
172+ ³ 404, valid cert
173+ ⁴ Redirects to http; mismatched, CN: www.yahoo.com
174+ ⁵ Dropped
175+ ⁶ Recursive redirect
176+ ⁷ 404; mismatched, CN: *.news.yahoo.com
177+ ⁸ Redirects to http; mismatched, CN: *.news.yahoo.com
178+ ⁹ "Incorrect Host in URL"
179+
180+ Problematic domains:
181+
182+ - i.acdn.us ¹
183+ - cm.npc-morris.overture.com ²
184+ - cm.npc-nydn.overture.com ²
185+ - totaltravel.co.uk ³
186+ - www.totaltravel.co.uk ⁴
187+ - totaltravel.com ³
188+ - www.totaltravel.com ⁴
189+
190+ yahoo.com subdomains:
191+
192+ - fr.actualites ⁴
193+ - advertisingcentral ⁴
194+
195+ - cl.answers ⁴
196+ - co.answers ⁴
197+ - pe.answers ⁴
198+ - ve.answers ⁴
199+
200+ - au.astrology ⁷
201+ - ca.astrology ⁴
202+ - nz.astrology ⁷
203+
204+ - ar.autos ⁴
205+ - de.autos ⁴
206+ - fr.autos ⁴
207+ - mx.autos ⁴
208+
209+ - axis ¹
210+ - id.berita ⁵
211+
212+ - au.biz ⁷
213+ - nz.biz ⁷
214+
215+ - \w\w.careers: (works; mismatched, CN: www.yahoo.com)
216+
217+ - au
218+ - ca
219+ - de
220+ - fr
221+ - hk
222+ - id
223+ - ie
224+ - in
225+ - it
226+ - jp
227+ - my
228+ - no
229+ - ph
230+ - qc ¹
231+ - sg
232+ - tw
233+ - uk
234+ - us
235+ - vn
236+
237+ - malaysia.careers ¹
238+ - cars ¹
239+ - tw.help.cc ¹
240+ - cine ¹
241+ - cn (reset)
242+ - connectedtv (works; mismatched, CN: smarttv.yahoo.com)
243+ - cl.deportes ⁴
244+ - co.deportes ⁴
245+ - es.deportes ⁴
246+ - pe.deportes ⁴
247+ - ve.deportes ⁴
248+ - au.dir ⁷
249+ - au.docs (works; mismatched, CN: *.yahoo7.com.au)
250+ - hk.ent ⁴
251+ - br.esportes ⁴
252+ - es.everything ⁴
253+ - fr.eurosport ⁴
254+ - fr.divertissement ⁵
255+ - dk ⁴
256+ - fantasysports ⁴
257+ - es.laliga.fantasysports ⁴
258+ - tw.fashion ⁵
259+ - feedback ⁴
260+ - chart.finance ⁴
261+ - ichart.finance ⁴
262+ - ie.finance ⁴
263+ - kr.finance (404, valid cert)
264+ - au.food (403; mismatched, CN: *.yahoo7.com.au)
265+ - nz.food (403; mismatched, CN: *.yahoo7.com.au)
266+ - au.forums ⁷
267+
268+ - games subdomains:
269+
270+ - br ⁴
271+ - de ⁴
272+ - es ⁴
273+ - fr ⁴
274+ - id ⁴
275+ - it ⁴
276+ - malaysia ⁴
277+ - nz ⁴
278+ - ph ⁴
279+
280+ - it.giochi ⁵
281+ - ie.groups ⁴
282+ - kr.gugi ⁴
283+ - au.gwn7 (mixed css from l.yimg.com)
284+ - fr.help ⁴
285+ - help.cc.hk ⁴
286+ - fr.jeux ⁵
287+ - es.juegos ⁵
288+ - kr ⁴
289+
290+ - lifestyle subdomains:
291+
292+ - ar ⁴
293+ - br ⁴
294+ - ca ⁴
295+ - es ⁴
296+ - es-us ⁴
297+ - fr ⁴
298+ - ie ⁴
299+ - it ⁴
300+
301+ - ca.local (dropped, redirect destination cert mismatched)
302+ - fr.local ⁴
303+ - es.maps ⁴
304+ - in.maps ⁴
305+ - kr.maps ⁴
306+ - mx.maps ⁴
307+ - nz.maps ⁴
308+
309+ - external.global.media ⁵
310+ - au.messages ⁷
311+ - ie.messenger ⁴
312+ - nz.messenger ⁷
313+ - tw.messenger ⁴
314+ - dk.mobile ⁴
315+ - ie.mobile ⁴
316+ - no.mobile ⁴
317+ - webservices.mobile (works, self-signed)
318+ - tw.atm.money (works; mismatched, CN: tw.campaign.money.yahoo.com)
319+
320+ - br.movies ¹
321+ - fr.movies ¹
322+ - es.movies ⁴
323+ - es-us.movies ⁴
324+ - it.movies ⁴
325+
326+ - br.mulher ⁵
327+ - hk.music ¹
328+ - tw.music ⁵
329+ - fr.musique ⁵
330+
331+ - news subdomains:
332+
333+ - ar ⁴
334+ - br ⁴
335+ - cl ⁴
336+ - co ⁴
337+ - de ⁴
338+ - dk ⁴
339+ - id ⁴
340+ - ie ⁴
341+ - it ⁴
342+ - mx ⁴
343+ - pe ⁴
344+ - qc ⁴
345+ - au.rss (mixed css from l.yimg.com)
346+ - ve ⁴
347+
348+ - no ⁴
349+ - notepad (works; mismatched, CN: *.calendar.yahoo.com)
350+ - it.notizie ⁵
351+
352+ - on ⁴
353+ - it.oroscopo ⁵
354+ - fr.pourelles ⁵
355+ - br.esporteinterativo ⁵
356+ - id.olahraga ⁵
357+ - au.prime7 (mixed css from l.yimg.com)
358+ - ru ⁴
359+
360+ - safely subdomains: ⁴
361+
362+ - ar
363+ - br
364+ - cl
365+ - es
366+ - es-us
367+ - malaysia
368+ - pe
369+ - ve
370+ - vn
371+
372+ - cn.search ⁴
373+ - my.images.search ⁴
374+ - kr.images.search ⁴
375+ - nz.maps.search ⁴
376+ - my.search ⁴
377+ - my.video.search ⁴
378+ - kr.searchad ¹
379+
380+ - ph.she ⁵
381+ - fr.sites ⁵
382+
383+ - de.solutions ¹
384+ - es.solutions ¹
385+ - fr.solutions ¹
386+ - it.solutions ¹
387+ - nz.solutions ⁷
388+ - uk.solutions ¹
389+
390+ - sport ⁴
391+
392+ - sports subdomains:
393+
394+ - ar ⁴
395+ - br ⁴
396+ - de ⁴
397+ - es ⁴
398+ - id ⁴
399+ - in ⁴
400+ - uk ⁴
401+
402+ - br.tempo ⁵
403+ - es.tendencias ⁵
404+ - au.todaytonight (403, valid cert)
405+
406+ - au.travel ⁷
407+ - ca.travel ⁴
408+ - id.travel ⁴
409+ - my.travel ⁴
410+ - nz.travel ⁷
411+ - ph.travel ⁴
412+ - uk.travel ⁴
413+ - ca.tv ⁴
414+ - pe.tv ⁴
415+
416+ - video subdomains:
417+
418+ - ^ ⁴
419+ - ar ⁴
420+ - au ⁴
421+ - br ⁴
422+ - ca ⁴
423+ - co ⁴
424+ - de ⁴
425+ - es ⁴
426+ - es-us ⁴
427+ - fr ⁴
428+ - hk ⁴
429+ - in ⁴
430+ - it ⁴
431+ - pe ⁴
432+ - mx ⁴
433+ - uk ⁴
434+ - ve ⁴
435+
436+ - fr.voyage (works; expired 2013-01-08, mismatched, CN: uk.travel.yahoo.com)
437+
438+ - weather subdomains:
439+
440+ - ar ⁴
441+ - au ⁴
442+ - br ⁴
443+ - cl ⁴
444+ - co ⁴
445+ - de ⁴
446+ - es ⁴
447+ - espanol ⁴
448+ - fr ⁴
449+ - it ⁴
450+ - kr ⁴
451+ - mx ⁴
452+ - pe ⁴
453+ - tw ⁴
454+ - mx ⁴
455+ - ve ⁴
456+
457+ - widgets (works; mismatched, CN: smarttv.yahoo.com)
458+ - au.youth (works; mismatched, CN: yahoo.com.au)
459+
460+
461+ - (www.)yhoo.it ⁴ (bit.ly alias)
462+
463+ ¹ Dropped
464+ ² Works, mismatched, CN: *.ysm.yahoo.com
465+ ³ Works; mismatched, CN: builder.totaltravel.com
466+ ⁴ Refused
467+ ⁵ Works; mismatched, CN: *.news.yahoo.com
468+ ⁶ Works; mismatched, CN: address.yahoo.com
469+ ⁷ "Incorrect Host in URL"
470+
471+
472+ Partially covered domains:
473+
474+ - (www.)totaltravel.com (→ au.totaltravel.yahoo.com, haven't found images/)
475+
476+ - yahoo.com subdomains:
477+
478+ - advertisingcentral ¹ (→ advertising)
479+ - fantasysports ¹ (-> sports)
480+ - in.sports (→ cricket, /*(?!$) doesn't redirect)
481+ - nz.video (→ nz.news, \w.* 404s)
482+
483+ ¹ Some paths other than root don't redirect
484+ ⁵ Avoiding false/broken MCB
485+
486+
487+ Fully covered domains:
488+
489+ - i.acdn.us (→ s.yimg.com/ck/)
490+
491+ - (www.)totaltravel.co.uk (→ au.totaltravel.yahoo.com)
492+
493+ - yahoo.com subdomains:
494+
495+ - (www.)
496+
497+ - \w\w:
498+
499+ - ar
500+ - au
501+ - br
502+ - ca
503+ - cl
504+ - cn (→ sg)
505+ - co
506+ - de
507+ - dk (→ www)
508+ - e1 (→ espanol)
509+ - es
510+ - fr
511+ - gr
512+ - hk
513+ - id
514+ - ie
515+ - in
516+ - it
517+ - kr (→ tools.search)
518+ - mx
519+ - no (→ www)
520+ - nz
521+ - pe
522+ - ph
523+ - qc
524+ - ru (→ www)
525+ - se
526+ - sg
527+ - tw
528+ - ve
529+ - vn
530+ - uk
531+ - us
532+
533+ - fr.actualites (→ fr.news)
534+ - fr-ca.actualites
535+ - address
536+
537+ - \w\w.address:
538+
539+ - ca
540+ - e1
541+ - fr
542+ - hk
543+ - nz
544+
545+ - admanager
546+
547+ - \w\w.adserver:
548+
549+ - au
550+ - uk
551+ - us
552+
553+ - global.adserver
554+ - adspecs
555+
556+ - \w+.adspecs:
557+
558+ - au
559+ - de
560+ - es
561+ - fr
562+ - hk
563+ - in
564+ - it
565+ - latam
566+ - nz
567+ - sea
568+ - uk
569+
570+ - \w+.adspecs-new:
571+
572+ - in
573+ - sea
574+
575+ - advertising
576+
577+ - \w\w.advertising:
578+
579+ - au
580+ - ca
581+ - fr
582+ - nz
583+
584+ - beap.adx
585+ - c5.ah
586+ - c5a.ah
587+ - cookex.amp
588+ - s-cookex.amp
589+
590+ - analytics subdomains:
591+
592+ - [aoyz]
593+ - apac
594+ - y3
595+
596+ - anc
597+ - answers
598+
599+ - \w\w.answers:
600+
601+ - ar
602+ - au
603+ - br
604+ - ca
605+ - cl (→ espanol.answers)
606+ - co (→ espanol.answers)
607+ - de
608+ - es
609+ - fr
610+ - id
611+ - in
612+ - it
613+ - mx
614+ - nz
615+ - pe (→ espanol.answers)
616+ - ph
617+ - qc
618+ - sg
619+ - uk
620+ - ve (→ espanol.answers)
621+ - vn
622+
623+ - espanol.answers
624+ - malaysia.answers
625+
626+ - antispam
627+
628+ - \w\w.antispam:
629+
630+ - ca
631+ - dk
632+ - fr
633+ - in
634+
635+ - vn.antoan
636+ - au.apps
637+ - global.ard
638+
639+ - \w\w.astrology:
640+
641+ - au (→ au.lifestyle)
642+ - ca (→ ca.shine)
643+ - es
644+ - fr
645+ - nz (→ nz.lifestyle)
646+ - uk
647+
648+ - auctions subdomains:
649+
650+ - hk
651+ - hk.info
652+ - hk.f1.master
653+ - hk.f1.page
654+ - hk.search
655+ - hk.store
656+ - hk.edit.store
657+ - hk.user
658+
659+ - autos
660+
661+ - \w\w.autos:
662+
663+ - ca
664+ - ar (→ ar.autocosmos.yahoo.net)
665+ - de (→ de.cars)
666+ - fr (→ fr.cars)
667+ - mx (→ mx.autocosmos.yahoo.net)
668+ - tw
669+
670+ - bc subdomains:
671+
672+ - clicks.beap
673+ - csc.beap
674+ - pn1
675+ - row
676+ - us
677+
678+ - axis (→ www)
679+ - ar.ayuda
680+
681+ - bid subdomains:
682+
683+ - tw.campaign
684+ - tw.master
685+ - tw.mb
686+ - tw.page
687+ - tw.search
688+ - tw.store
689+ - tw
690+ - tw.user
691+
692+ - tw.bigdeals
693+ - m.tw.bigdeals
694+ - tw.billing
695+ - biz
696+ - au.biz (→ au.finance)
697+ - nz.biz (→ nz.finance)
698+ - boss
699+ - tw.partner.buy
700+ - tw.buy
701+ - calendar
702+
703+ - \w\w.calendar:
704+
705+ - ar
706+ - au
707+ - br
708+ - ca
709+ - de
710+ - dk
711+ - es
712+ - fr
713+ - gr
714+ - hk
715+ - ie
716+ - in
717+ - it
718+ - no
719+ - nz
720+ - se
721+ - sg
722+ - tw
723+ - uk
724+ - us
725+
726+ - careers
727+
728+ - \w\w.careers (→ careers)
729+
730+ - ar
731+ - au
732+ - br
733+ - ca
734+ - cl
735+ - de
736+ - fr
737+ - es
738+ - hk
739+ - id
740+ - ie
741+ - in
742+ - it
743+ - jp
744+ - mx
745+ - my
746+ - no
747+ - ph
748+ - qc
749+ - nz
750+ - sg
751+ - tw
752+ - uk
753+ - us
754+ - vn
755+
756+ - malaysia.careers (→ careers)
757+
758+ - cars (→ autos)
759+
760+ - \w\w.cars:
761+
762+ - de
763+ - es
764+ - fr
765+ - it
766+ - uk
767+
768+ - \w\w.celebridades:
769+
770+ - ar
771+ - br
772+ - co
773+ - mx
774+
775+ - es-us.celebridades
776+
777+ - celebrity
778+
779+ - \w\w.celebrity:
780+
781+ - ca
782+ - es
783+ - gr
784+ - id
785+ - in
786+ - it
787+ - hk
788+ - ph
789+ - tw
790+ - uk
791+
792+ - tw.help.cc (→ help)
793+ - tw.charity
794+ - chart
795+ - cine (→ es-us.cine)
796+
797+ - \w\w.cine:
798+
799+ - cl
800+ - co
801+ - es
802+ - mx
803+ - pe
804+ - ve
805+
806+ - es-us.cine
807+
808+ - \w\w.cinema:
809+
810+ - br
811+ - fr
812+ - it
813+
814+ - \w\w.clima:
815+
816+ - cl
817+ - co
818+ - mx
819+ - pe
820+ - ve
821+
822+ - es-us.clima
823+ - migration.cn
824+ - commercecentral
825+ - developers.commercecentral
826+ - connectedtv (→ smarttv)
827+ - br.contribuidores
828+ - contributor
829+ - uk.contributor
830+ - cricket
831+ - au.dating
832+
833+ - \w\w.deportes:
834+
835+ - ar
836+ - cl (→ es-us.deportes)
837+ - co (→ es-us.deportes)
838+ - es (→ es.eurosport)
839+ - mx
840+ - pe (→ pe-us.deportes)
841+ - ve (→ ve-us.deportes)
842+
843+ - es-us.deportes
844+ - developer
845+ - tw.dictionary
846+ - dir
847+ - au.dir (→ au.search)
848+ - downloads
849+ - s-b.dp
850+
851+ - edit subdomains:
852+
853+ - ^
854+ - eu
855+ - na
856+ - sa
857+ - tw
858+
859+ - tw.emarketing
860+ - tw.ysm.emarketing
861+ - en-maktoob
862+ - hk.ent (→ hk.celebrity)
863+
864+ - \w\w.entertainment:
865+
866+ - my
867+ - nz
868+
869+ - espanol
870+ - edit.europe
871+ - java.europe (→ adgallery.zenfs.com)
872+
873+ - eurosport subdomains:
874+
875+ - ^
876+ - de
877+ - es
878+ - fr (→ fr.sports)
879+ - it
880+ - uk
881+
882+ - everything
883+
884+ - \w\w.everything:
885+
886+ - ca
887+ - es (→ es.todo)
888+ - nz
889+ - ph
890+ - pt
891+ - tw
892+ - uk
893+
894+ - au.fango
895+
896+ - \w+.fantasysports:
897+
898+ - baseball
899+ - football
900+ - golf
901+ - hockey
902+ - racing
903+
904+ - es.laliga.fantasysports (→ es.eurosport)
905+ - tw.fashion
906+ - feedback (→ yahoo.uservoice.com)
907+ - br.financas
908+ - finance
909+
910+ - \w\w.finance:
911+
912+ - ar
913+ - au
914+ - br
915+ - ca
916+ - de
917+ - es
918+ - fr
919+ - hk
920+ - ie (→ uk.finance)
921+ - in
922+ - it
923+ - kr (→ tools.search)
924+ - mx
925+ - nz
926+ - sg
927+ - tw
928+ - uk
929+
930+ - chart.finance (→ chart)
931+ - tw.chart.finance
932+ - espanol.finance
933+ - tw.futures.finance
934+ - ichart.finance (→ ichart)
935+ - streamerapi.finance
936+
937+ - \w\w.finanzas:
938+
939+ - ar
940+ - mx
941+
942+ - es-us.finanzas
943+
944+ - food subdomains:
945+
946+ - au (→ au.lifestyle)
947+ - nz (→ nz.lifestyle)
948+ - nz.rss
949+
950+ - au.forums (→ au.answers)
951+ - nz.forums
952+
953+ - games subdomains:
954+
955+ - ^
956+ - au
957+ - ca
958+ - de (→ de.spiele)
959+ - id (→ games)
960+ - malaysia (→ games)
961+ - nz.games (→ games)
962+ - ph (→ games)
963+ - uk
964+
965+ - geo
966+ - gma
967+ - groups
968+
969+ - \w\w.groups:
970+
971+ - ar
972+ - au
973+ - br
974+ - ca
975+ - de
976+ - dk
977+ - es
978+ - fr
979+ - hk
980+ - ie (→ uk.groups)
981+ - in
982+ - it
983+ - kr
984+ - mx
985+ - nz
986+ - ph
987+ - sg
988+ - tw
989+ - uk
990+ - us
991+
992+ - asia.groups
993+ - espanol.groups
994+ - es-us.groups
995+ - fr-ca.groups
996+ - moderators.groups
997+ - kr.gugi (→ tools.search)
998+ - health
999+ - help
1000+
1001+ - \w\w.help:
1002+
1003+ - au
1004+ - br
1005+ - ca
1006+ - dk
1007+ - fr (→ help)
1008+ - hk
1009+ - io
1010+ - tw
1011+ - uk
1012+
1013+ - secure.help
1014+ - help.cc.hk (→ help)
1015+ - homes
1016+ - tw.house
1017+ - tw.v2.house
1018+ - ichart
1019+ - info
1020+
1021+ - \w\w.info:
1022+
1023+ - tw
1024+
1025+ - tw.tool.ks
1026+ - au.launch
1027+ - legalredirect
1028+
1029+ - \w\w.lifestyle:
1030+
1031+ - ar (→ ar.mujer)
1032+ - au
1033+ - ca (→ ca.shine)
1034+ - de
1035+ - hk
1036+ - ie (→ uk.lifestyle)
1037+ - in
1038+ - it
1039+ - mx (→ mx.mujer)
1040+ - nz
1041+ - uk
1042+
1043+ - es-us.lifestyle (→ ar.mujer)
1044+ - login
1045+ - gh.bouncer.login
1046+ - us.lrd
1047+ - local
1048+
1049+ - \w\w.local:
1050+
1051+ - au
1052+ - de
1053+ - fr (→ fr)
1054+ - uk
1055+
1056+ - m
1057+ - r.m
1058+
1059+ - \w\w.m:
1060+
1061+ - ar
1062+ - au
1063+ - br
1064+ - ca
1065+ - cn
1066+ - de
1067+ - es
1068+ - fr
1069+ - hk
1070+ - id
1071+ - ie
1072+ - in
1073+ - it
1074+ - kr
1075+ - ph
1076+ - qc
1077+ - se
1078+ - sg
1079+ - mx
1080+ - tw
1081+ - uk
1082+ - us
1083+ - vn
1084+
1085+ - mail
1086+
1087+ - *.mail:
1088+
1089+ - ar
1090+ - au
1091+ - co
1092+ - e1
1093+ - es
1094+ - fr
1095+ - it
1096+ - mrd
1097+ - my
1098+ - overview
1099+
1100+ - \w\w.overview:
1101+
1102+ - br
1103+ - ca
1104+ - co
1105+ - e1
1106+ - hk
1107+ - ph
1108+ - tw
1109+ - uk
1110+ - us
1111+
1112+ - ph
1113+ - th
1114+ - tw
1115+ - us-mg6
1116+ - vn
1117+ - c.c.yom
1118+ - \w+-c.c.yom
1119+
1120+ - maktoob
1121+ - malaysia
1122+ - tw.mall
1123+ - tw.user.mall
1124+ - maps
1125+
1126+ - \w\w.maps:
1127+
1128+ - au
1129+ - ca
1130+ - de
1131+ - es (→ es.search)
1132+ - fr
1133+ - in (→ maps)
1134+ - it
1135+ - kr (→ tools.search)
1136+ - mx (→ espanol.maps)
1137+ - nz (→ nz.search)
1138+ - qc
1139+ - tw
1140+ - uk
1141+
1142+ - espanol.maps
1143+ - sgws2.maps
1144+ - au.messages (→ au.answers)
1145+ - messenger
1146+
1147+ - \w\w.messenger:
1148+
1149+ - ar
1150+ - au
1151+ - br
1152+ - ca
1153+ - cf
1154+ - cl
1155+ - co
1156+ - de
1157+ - e1
1158+ - es
1159+ - fr
1160+ - hk
1161+ - id
1162+ - ie (→ uk.messenger)
1163+ - in
1164+ - it
1165+ - kr
1166+ - mx
1167+ - my
1168+ - nz (→ messenger)
1169+ - pe
1170+ - ph
1171+ - qc
1172+ - sg
1173+ - th
1174+ - tw (→ hk)
1175+ - uk
1176+ - us
1177+ - ve
1178+ - vn
1179+
1180+ - malaysia.messenger
1181+ - \w\w.meteo:
1182+
1183+ - fr
1184+ - it
1185+
1186+ - mlogin
1187+ - mobile
1188+
1189+ - \w\w.mobile:
1190+
1191+ - ar
1192+ - au
1193+ - br
1194+ - ca
1195+ - de
1196+ - dk (→ www)
1197+ - es
1198+ - fr
1199+ - hk
1200+ - id
1201+ - ie (→ uk.mobile)
1202+ - in
1203+ - it
1204+ - mx
1205+ - my
1206+ - nz
1207+ - no (→ www)
1208+ - ph
1209+ - qc
1210+ - sg
1211+ - th
1212+ - tw
1213+ - uk
1214+ - us
1215+ - vn
1216+
1217+ - espanol.mobile
1218+ - malaysia.mobile
1219+ - tw.campaign.money
1220+ - tw.money
1221+
1222+ - tw.movie
1223+
1224+ - movies subdomains:
1225+
1226+ - ^
1227+ - au
1228+ - br (→ br.cinema)
1229+ - ca
1230+ - es (→ es.cine)
1231+ - espanol (→ es-us.cine)
1232+ - fr (→ fr.cinema)
1233+ - it (→ it.cinema)
1234+ - nz
1235+ - au.rss
1236+ - nz.rss
1237+ - tw
1238+ - uk
1239+
1240+ - *.msg:
1241+
1242+ - dps (→ ycpi-mail-dps)
1243+ - prod2.rest-core
1244+ - prod1.rest-notify
1245+ - ycpi-mail-dps
1246+ - ycpi-mail-preferences
1247+ - ycpi-mail-rest-core
1248+ - ycpi-mail-rest-core2
1249+
1250+ - \w\w.mujer:
1251+
1252+ - ar
1253+ - co
1254+ - mx
1255+
1256+ - es-us.mujer
1257+
1258+ - music subdomains:
1259+
1260+ - ^
1261+ - ca
1262+ - hk (→ hk.celebrity)
1263+ - tw (→ tw.music.yahoo.net)
1264+
1265+ - [\w-]+\.musica:
1266+
1267+ - es-us
1268+ - mx
1269+
1270+ - my
1271+ - us.my
1272+ - de.nachrichten
1273+ - ucs.netsvs
1274+
1275+ - news subdomains:
1276+
1277+ - ^
1278+ - ar (→ ar.noticias)
1279+ - au
1280+ - br (→ br.noticias)
1281+ - au
1282+ - ca
1283+ - cl (→ cl.noticias)
1284+ - co (→ co.noticias)
1285+ - dk (→ www)
1286+ - es (→ es.noticias)
1287+ - fr
1288+ - gr
1289+ - hk
1290+ - ie (→ uk.news)
1291+ - in
1292+ - mx (→ mx.noticias)
1293+ - my
1294+ - nz
1295+ - pe (→ pe.noticias)
1296+ - ph
1297+ - nz.rss
1298+ - sg
1299+ - tw
1300+ - uk
1301+ - ve (→ ve.noticias)
1302+ - vn
1303+
1304+ - cookiex.ngd
1305+
1306+ - \w\w.noticias
1307+
1308+ - ar
1309+ - br
1310+ - cl
1311+ - co
1312+ - es
1313+ - mx
1314+ - pe
1315+ - ve
1316+
1317+ - es-us.noticias
1318+ - omg
1319+
1320+ - \w\w.omg:
1321+
1322+ - ar
1323+ - br
1324+ - co
1325+ - es
1326+ - it
1327+ - mx
1328+ - ph
1329+ - tw
1330+
1331+ - es-us.omg
1332+ - on (→ pilotx1)
1333+ - au.oztips
1334+ - rtb.pclick
1335+ - pilotx1
1336+ - pipes
1337+ - play
1338+ - playerio
1339+ - privacy
1340+ - profile
1341+ - tw.promo
1342+
1343+ - au.promotions
1344+ - hk.promotions
1345+ - nz.promotions
1346+
1347+ - publishing
1348+
1349+ - query subdomains:
1350+
1351+ - analytics
1352+ - mailapps
1353+ - media
1354+ - ucs
1355+ - us-locdrop
1356+ - video
1357+
1358+ - tw.rd
1359+ - us.rd
1360+
1361+ - safely
1362+
1363+ - \w\w.safely:
1364+
1365+ - ar (→ ar.seguridad)
1366+ - au
1367+ - ca
1368+ - cl (→ cl.seguridad)
1369+ - co
1370+ - de
1371+ - fr
1372+ - hk
1373+ - id
1374+ - in
1375+ - it
1376+ - mx (→ mx.seguridad)
1377+ - my
1378+ - nz
1379+ - pe (→ pe.seguridad)
1380+ - ph
1381+ - sg
1382+ - tw
1383+ - uk
1384+ - ve (→ ve.seguridad)
1385+
1386+ - es-us.safely (→ es.us.seguridad)
1387+ - fr-ca.safely
1388+ - malaysia.safely (→ my.safely)
1389+
1390+ - screen
1391+
1392+ - \w\w.screen:
1393+
1394+ - ar
1395+ - br
1396+ - ca
1397+ - co
1398+ - de
1399+ - es
1400+ - fr
1401+ - hk
1402+ - in
1403+ - it
1404+ - mx
1405+ - tw
1406+ - uk
1407+
1408+ - es-us.screen
1409+ - scribe
1410+
1411+ - search subdomains:
1412+
1413+ - ^
1414+
1415+ - \w\w:
1416+
1417+ - ar
1418+ - au
1419+ - be
1420+ - br
1421+ - ca
1422+ - cl
1423+ - cn (→ sg)
1424+ - co
1425+ - de
1426+ - dk
1427+ - es
1428+ - fi
1429+ - fr
1430+ - gr
1431+ - hk
1432+ - id
1433+ - ie
1434+ - in
1435+ - it
1436+ - kr
1437+ - mx
1438+ - my (→ malaysia)
1439+ - nl
1440+ - no
1441+ - nz
1442+ - pe
1443+ - ph
1444+ - ru
1445+ - se
1446+ - sg
1447+ - tw
1448+ - uk
1449+ - ve
1450+ - vn
1451+
1452+ - \w\w.blog:
1453+
1454+ - tw
1455+
1456+ - \w\w.dictionary:
1457+
1458+ - tw
1459+
1460+ - finance
1461+
1462+ - \w\w.finance:
1463+
1464+ - au
1465+ - nz
1466+
1467+ - images
1468+
1469+ - \w\w.images:
1470+
1471+ - ar
1472+ - au
1473+ - br
1474+ - ca
1475+ - cn (→ sg.images.search)
1476+ - de
1477+ - dk
1478+ - es
1479+ - fi
1480+ - fr
1481+ - hk
1482+ - id
1483+ - in
1484+ - it
1485+ - kr (→ kr.search)
1486+ - nl
1487+ - mx
1488+ - my (→ malaysia.images.search)
1489+ - no
1490+ - nz
1491+ - pe
1492+ - ph
1493+ - qc
1494+ - ru
1495+ - se
1496+ - sg
1497+ - tw
1498+ - uk
1499+ - ve
1500+ - vn
1501+
1502+ - malaysia.images
1503+
1504+ - \w\w.knowledge:
1505+
1506+ - tw
1507+
1508+ - \w\w.lifestyle:
1509+
1510+ - au
1511+ - nz
1512+
1513+ - \w\w.local:
1514+
1515+ - tw
1516+
1517+ - malaysia
1518+
1519+ - nz.maps (→ nz.search)
1520+
1521+ - \w\w.news:
1522+
1523+ - ar
1524+ - au
1525+ - ca
1526+ - de
1527+ - fr
1528+ - sg
1529+ - tw
1530+ - uk
1531+
1532+ - malaysia.news
1533+
1534+ - movies
1535+
1536+ - \w\w.movies:
1537+
1538+ - au
1539+ - ca
1540+ - es
1541+ - fr
1542+ - it
1543+ - nz
1544+ - sg
1545+ - uk
1546+
1547+ - news
1548+
1549+ - \w\w.news:
1550+
1551+ - ar
1552+ - au
1553+ - br
1554+ - es
1555+ - fr
1556+ - it
1557+ - nz
1558+ - pe
1559+ - sg
1560+ - uk
1561+
1562+ - r
1563+ - recipes
1564+
1565+ - \w\w.recipes:
1566+
1567+ - ar
1568+ - au
1569+ - br
1570+ - es
1571+ - fr
1572+ - it
1573+ - mx
1574+ - nz
1575+ - tw
1576+ - uk
1577+
1578+ - shine
1579+ - shopping
1580+
1581+ - \w\w.shopping:
1582+
1583+ - tw
1584+
1585+ - sports
1586+
1587+ - \w\w.sports:
1588+
1589+ - au
1590+ - nz
1591+
1592+ - profiles.sports
1593+ - tools
1594+ - au.tv
1595+ - video
1596+
1597+ - \w\w.video:
1598+
1599+ - ar
1600+ - au
1601+ - br
1602+ - ca
1603+ - de
1604+ - es
1605+ - fr
1606+ - hk
1607+ - id
1608+ - in
1609+ - it
1610+ - mx
1611+ - my (→ malaysia.video)
1612+ - nz
1613+ - ph
1614+ - qc
1615+ - sg
1616+ - tw
1617+ - uk
1618+ - vn
1619+
1620+ - malaysia.video
1621+
1622+ - kr.searchad (→ tools.search)
1623+ - rtb.pclick.secure
1624+ - security
1625+ - tw.security
1626+
1627+ - \w\w.seguranca:
1628+
1629+ - br
1630+
1631+ - \w\w.seguridad:
1632+
1633+ - ar
1634+ - cl
1635+ - co
1636+ - mx
1637+ - pe
1638+ - ve
1639+
1640+ - es-us.seguridad
1641+
1642+ - \w\w.seguro:
1643+
1644+ - seguro
1645+
1646+ - tw.serviceplus
1647+ - settings
1648+ - shine
1649+ - ca.shine
1650+ - shopping
1651+ - ca.shopping
1652+
1653+ - \w+.sitios:
1654+
1655+ - co
1656+ - mx
1657+
1658+ - dashboard.slingstone
1659+
1660+ - smallbusiness
1661+ - au.smallbusiness
1662+ - order.smallbusiness
1663+
1664+ - smarttv
1665+
1666+ - de.solutions (→ de.adspecs)
1667+ - es.solutions (→ es.adspecs)
1668+ - fr.solutions (→ fr.adspecs)
1669+ - it.solutions (→ it.adspecs)
1670+ - nz.solutions (→ nz.advertising)
1671+ - uk.solutions (→ uk.adspecs)
1672+
1673+ - rd.software
1674+ - de.spiele
1675+
1676+ - sport (→ sports)
1677+
1678+ - sports subdomains:
1679+
1680+ - ^
1681+ - au
1682+ - ca
1683+ - de (→ de.eurosport)
1684+ - es (→ es.eurosport)
1685+ - fr
1686+ - hk
1687+ - nz
1688+ - ph
1689+ - au.rss
1690+ - nz.rss
1691+ - tw
1692+ - uk (→ uk.eurosport)
1693+
1694+ - tw.stock
1695+ - au.thehype
1696+
1697+ - \w\w.tiempo:
1698+
1699+ - ar
1700+ - es
1701+
1702+ - au.todaytonight (→ au.news)
1703+ - es.todo
1704+ - toolbar
1705+
1706+ - \w\w.toolbar:
1707+
1708+ - ar
1709+ - au
1710+ - br
1711+ - ca
1712+ - cl
1713+ - cn
1714+ - co
1715+ - de
1716+ - es
1717+ - fr
1718+ - hk
1719+ - id
1720+ - in
1721+ - it
1722+ - mx
1723+ - my
1724+ - nz
1725+ - pe
1726+ - ph
1727+ - sg
1728+ - tw
1729+ - uk
1730+ - ve
1731+ - vn
1732+
1733+ - data.toolbar
1734+ - malaysia.toolbar
1735+ - au.totaltravel
1736+ - nz.totaltravel
1737+ - transparency
1738+ - travel
1739+ - au.travel (→ au.totaltravel)
1740+ - ca.travel (→ travel)
1741+ - my.travel (→ my.news)
1742+ - nz.travel (→ nz.totaltravel)
1743+ - ph.travel (→ ph.news)
1744+ - tw.travel
1745+ - uk.travel (→ uk.lifestyle)
1746+
1747+ - tv subdomains:
1748+
1749+ - ^
1750+ - ar
1751+ - au
1752+ - br
1753+ - ca (→ tv)
1754+ - de
1755+ - es
1756+ - es-us
1757+ - fr
1758+ - hk (→ hk.celebrity)
1759+ - it
1760+ - mx
1761+ - nz
1762+ - pe (→ es-us.tv)
1763+ - au.rss
1764+ - uk
1765+
1766+ - tw.uwant
1767+
1768+ - video subdomains:
1769+
1770+ - ^ (→ screen)
1771+ - ar (→ ar.screen)
1772+ - au (→ au.tv)
1773+ - br (→ br.screen)
1774+ - ca (→ ca.screen)
1775+ - co (→ co.screen)
1776+ - de (→ de.screen)
1777+ - es (→ es.screen)
1778+ - es-us (→ es-us.screen)
1779+ - fr (→ fr.screen)
1780+ - hk (→ help)
1781+ - in (→ in.screen)
1782+ - it (→ it.screen)
1783+ - mh
1784+ - mx (→ mx.screen)
1785+ - nz
1786+ - pe (→ es-us.screen)
1787+ - qos
1788+ - uk (→ uk.screen)
1789+ - ve (→ es-us.screen)
1790+ - yep
1791+
1792+ - weather subdomains:
1793+
1794+ - ^
1795+ - ar (→ ar.tiempo)
1796+ - au
1797+ - ca
1798+ - cl (→ cl.clima)
1799+ - co (→ co.clima)
1800+ - es (→ es.tiempo)
1801+ - espanol (→ es-us.clima)
1802+ - fr (→ fr.meteo)
1803+ - hk
1804+ - in
1805+ - it (→ it.meteo)
1806+ - mx (→ mx.clima)
1807+ - nz
1808+ - pe (→ pe.clima)
1809+ - ph
1810+ - sg
1811+ - tw (→ tw.news)
1812+ - uk
1813+ - us
1814+ - ve (→ ve.clima)
1815+
1816+ - de.wetter
1817+ - widgets (→ www)
1818+ - au.yel
1819+ - video.media.yql
1820+ - dmros.ysm
1821+
1822+
1823+ These altnames don't exist:
1824+
1825+ - manhattan.yahoo.com
1826+ - tw.moderation.money.yahoo.com
1827+
1828+
1829+ Observed cookie domains:
1830+
1831+ - . ¹
1832+ - .answers ²
1833+ - .auctions ¹
1834+ - .bid ¹
1835+ - .buy ⁴
1836+ - commercecentral
1837+ - developers.commercecentral ²
1838+ - .contributor ⁵
1839+ - tw.ysm.emarketing ³
1840+ - games ³
1841+ - homes ³
1842+ - au.local ³
1843+ - .maps ³
1844+ - .playerio ³
1845+ - profile ³
1846+ - .search ⁴
1847+ - .\w\w.tv ³
1848+ - tw.uwant ³
1849+ - .voices ⁵
1850+ - .www ³
1851+
1852+ ¹ Partially secured by us <= accounting for possible use on unsecurable domains
1853+ ² Secured by server
1854+ ⁵ Some secured by server, rest by us
1855+ ³ Secured by us <= not secured by server
1856+ ⁴ Not secured by us <= accounting for possible use on unsecurable domains
1857+ ⁵ Not secured by us <= no tls support
1858+
1859+
1860+ Mixed content:
1861+
1862+ - css, on:
1863+
1864+ - au.gwn7, tw.money, au.rss.news, and au.prime7 from l[13]?.yimg.com ¹
1865+
1866+ - Ads/web bugs, on:
1867+
1868+ - au.games from secure-us.imrworldwide.com ¹
1869+ - \w\w.celebrity, m, \w\w.m, and ar.mujer from csc.beap.bc.yahoo.com ¹
1870+ - au.news from au.adserver.yahoo.com ¹
1871+ - shine from www.facebook.com ¹
1872+
1873+ - Images, on:
1874+
1875+ - au.local from dacsisb9yvy2v.cloudfront.net ¹
1876+ - au.advertising, nz.advertising, au.answers, nz.answers, ph.answers, sg.answers, au, biz, \w\w.celebrity, cricket, nz.entertainment, eurosport, \w\w.eurosport, everything, au.fango, games, ichart, au.launch, nz.lifestyle, au.local, sg.messenger, tw.money, au.movies, nz.movies, au.news, nz.news, au.oztips, au.promotions, \w\w.safely, fr-ca.safely, search, \w\w.seguridad, es-us.seguridad, es.seguro, au.smallbusiness, au.rss.sports, nz.rss.sports, au.thehype, tw.toolbar, au.totaltravel, nz.totaltravel, au.tv, nz.tv, au.rss.tv, and nz.weather from l.yimg.com ¹
1877+ - ca.autos from yui.yahooapis.com ¹
1878+ - tw.info from l.yimg.com ¹
1879+ - tw.knowledge from tw.tool.ks ¹
1880+ - tw.knowledge from l.yimg.com ¹
1881+ - tw.money from ichart ¹
1882+ - tw.money from tw.news2.yimg.com ²
1883+ - tw.promo from www.adobe.com ¹
1884+ - au.totaltravel and nz.totaltravel from www.totaltravel.com ²
1885+ - \w\w.weather and de.wetter from media.zenfs.com ¹
1886+
1887+ - faivcon on tw from tw *
1888+
1889+ - Ads, on:
1890+
1891+ - fr.finance from www.borse.it ³
1892+ - tw.promo from www.facebook.com ¹
1893+ - de.kino from yahoo.quizaction.de ¹
1894+ - my.news from widgets.wego.com ²
1895+
1896+ ¹ Secured by us
1897+ ² Unsecurable
1898+ ³ Unsecurable <= redirects to http
1899+
1900+
1901+ Reported to fix bug
1902+
1903+ https://trac.torproject.org/projects/tor/ticket/4441
1904+
1905+
1906+ If you have a Yahoo Mail account, please test this ruleset!
1907+
1908+-->
1909+<ruleset name="Yahoo! (partial)">
1910+
1911+ <target host="i.acdn.us" />
1912+ <target host="rocketmail.com" />
1913+ <target host="www.rocketmail.com" />
1914+ <target host="totaltravel.co.uk" />
1915+ <target host="www.totaltravel.co.uk" />
1916+ <target host="totaltravel.com" />
1917+ <target host="*.totaltravel.com" />
1918+ <exclusion pattern="^http://(?:www\.)?totaltravel\.com/images/" />
1919+ <target host="yahoo.com" />
1920+ <target host="*.yahoo.com" />
1921+ <!--
1922+ Refused:
1923+ -->
1924+ <exclusion pattern="^http://(?:(?:cn|kr|tw)\.adspecs|(?:co|espanol|mx)\.astrology|kr\.mobile)\.yahoo\.com/" />
1925+ <!--
1926+ Redirect destination cert mismatched:
1927+ -->
1928+ <exclusion pattern="^http://ca\.local\.yahoo\.com/" />
1929+ <!--
1930+ Refused:
1931+ -->
1932+ <exclusion pattern="^http://cn\.overview\.mail\.yahoo\.com/" />
1933+ <!--exclusion pattern="^http://(cn|de|dk|id|ie|it|qc)\.news\.yahoo\.com/" /-->
1934+ <!--
1935+ Destination has mismatched cert:
1936+ -->
1937+ <exclusion pattern="^http://(?:br|es)\.safely\.yahoo\.com/" />
1938+ <target host="*.yahoofs.com" />
1939+ <target host="yhoo.it" />
1940+ <target host="ymail.com" />
1941+ <target host="www.ymail.com" />
1942+ <target host="*.zenfs.com" />
1943+
1944+
1945+ <!-- Some Yahoo cookies are cross-domain cookies.
1946+ It's a case of figuring out which ones
1947+ aren't needed on unsecurable pages.
1948+
1949+ - .yahoo.com
1950+ - AO
1951+ - B
1952+ - Set by y3.analytics.yahoo.com/itr.pl & us.bc.yahoo.com/b
1953+
1954+ - BA
1955+
1956+ - t=\d{10}
1957+
1958+ - CH
1959+ - \w{59}/
1960+ - F
1961+
1962+ - HP
1963+
1964+ - 0
1965+
1966+ - MSC
1967+ - t=\d{10}X
1968+ - PH (set by hjsal)
1969+ - SSL
1970+
1971+ - ucs (set by ucs.query)
1972+
1973+ - bnas=\d
1974+
1975+ - V
1976+
1977+ - v=\d.\d&cc=0&m=0
1978+
1979+ - Y
1980+
1981+ -->
1982+ <!--
1983+ Secured by server:
1984+ -->
1985+ <!--securecookie host="^\.answers\.yahoo\.com$" name="^answers3$" /-->
1986+ <!--securecookie host="^(developers\.)?commercecentral\.yahoo\.com$" name="^_rockstar_session$" /-->
1987+ <!--securecookie host="^\.contributor\.yahoo\.com$" name="^c$" /-->
1988+ <!--
1989+ Not secured by server:
1990+ -->
1991+ <!--securecookie host="^\.yahoo\.com$" name="^(AO|B|PH|au_ytv|tt_currency)$" /-->
1992+ <!--securecookie host="^\.auctions\.yahoo\.com$" name="^hkRecentHistory$" /-->
1993+ <!--securecookie host="^\.bid\.yahoo\.com$" name="^twRecentHistory$" /-->
1994+ <!--securecookie host="^commercecentral\.yahoo\.com$" name="^first_referer$" /-->
1995+ <!--securecookie host="^\.contributor\.yahoo\.com$" name="^ACSESS$" /-->
1996+ <!--securecookie host="^(\w\w\.celebridades|\w\w\.cinema|everything|\w\w\.financas|games|homes|\w\w\.news)\.yahoo\.com$" name="^AO$" /-->
1997+ <!--securecookie host="^tw\.ysm\.emarketing\.yahoo\.com$" name="^(device|is_c|tw_ysm_soeasy)$" /-->
1998+ <!--securecookie host="^(uk\.)?help\.yahoo\.com$" name="^(JSESSIONID|scav|scwysiwygparams)$" /-->
1999+ <!--securecookie host="^au\.local\.yahoo\.com$" name="^(aunz\.aulocal\.cookie|au_yloc)$" /-->
2000+ <!--securecookie host="^\.maktoob\.yahoo\.com$" name="^hpc$" /-->
2001+ <!--securecookie host="^\.maps\.yahoo\.com$" name="^MYCFL$" /-->
2002+ <!--securecookie host="^\.playerio\.yahoo\.com$" name="^playcodes-\d+$" /-->
2003+ <!--securecookie host="^profile\.yahoo\.com$" name="^YPRF$" /-->
2004+ <!--securecookie host="^\.search\.yahoo\.com$" name="^sSN$" /-->
2005+ <!--securecookie host="^\.es\.tv\.yahoo\.com$" name="^tv_listings_last_time$" /-->
2006+ <!--securecookie host="^tw\.uwant\.yahoo\.com$" name="^uwwtutorial$" /-->
2007+ <!--securecookie host="^\.www\.yahoo\.com$" name="^fpc$" /-->
2008+
2009+ <securecookie host="^\.yahoo\.com$" name="^(?:AO|B|SSL)$" />
2010+ <securecookie host="^(?:\.analytics|\w\w\.celebridades|\w\w\.cinema|commercecentral|\.contributor|tw\.ysm\.emarketing|everything|\w\w\.financas|games|help|\w\w\.help|homes|\w\w\.local|\.mail|\.maps|\.maktoob|movies|\.?news|\w\w.news|\.playerio|profile|(?:us-locdrop|video)\.query|images\.search|fr\.images\.search|\.toolbar|\.\w\w\.tv|\.uk|\.?us|tw\.uwant|\.www)\.yahoo\.com$" name=".+" />
2011+ <securecookie host="^\.bid\.yahoo\.com$" name="^twRecentHistory$" />
2012+ <securecookie host="^\.auctions\.yahoo\.com$" name="^hkRecentHistory$" />
2013+ <securecookie host="^\.zenfs\.com$" name="^BX$" />
2014+
2015+ <!-- Could we secure any of these safely?
2016+ -->
2017+ <!--securecookie host="^\.yahoo\.com$" name="^(DK|PH|au_ytv|tt_currency)$" /-->
2018+ <!--securecookie host="^\.buy\.yahoo\.com$" name="^YAct$" /-->
2019+ <!--securecookie host="^\.my\.yahoo\.com$" name="^(myc|MYTMI|U_mtupes)$" /-->
2020+ <!--securecookie host="^\.search\.yahoo\.com$" name="^sSN$" /-->
2021+
2022+
2023+ <rule from="^http://i\.acdn\.us/"
2024+ to="https://s.yimg.com/ck/" />
2025+
2026+ <rule from="^http://(?:www\.)?(?:rocket|y)mail\.com/"
2027+ to="https://mail.yahoo.com/" />
2028+
2029+ <rule from="^http://(?:www\.)?totaltravel\.co(?:m|\.uk)/"
2030+ to="https://au.totaltravel.yahoo.com/" />
2031+
2032+ <rule from="^http://builder\.totaltravel\.com/"
2033+ to="https://builder.totaltravel.com/" />
2034+
2035+ <!-- Redirect drops path and args:
2036+ -->
2037+ <rule from="^http://fr\.actualites\.yahoo\.com/.*"
2038+ to="https://fr.news.yahoo.com/" />
2039+
2040+ <rule from="^http://advertisingcentral\.yahoo\.com/+(?=$|\?)"
2041+ to="https://advertising.yahoo.com/" />
2042+
2043+ <!-- Redirect preserves path and args:
2044+ -->
2045+ <rule from="^http://(?:cl|co|pe|ve)\.answers\.yahoo\.com/+"
2046+ to="https://espanol.answers.yahoo.com/" />
2047+
2048+ <!-- Redirect drops path but not args:
2049+ -->
2050+ <rule from="^http://(au|nz)\.astrology\.yahoo\.com/[^?]*"
2051+ to="https://$1.lifestyle.yahoo.com/horoscopes/" />
2052+
2053+ <!-- Redirect drops path and args:
2054+ -->
2055+ <rule from="^http://ca\.astrology\.yahoo\.com/.*"
2056+ to="https://ca.shine.yahoo.com/horoscope/" />
2057+
2058+ <!-- Redirect keeps path and args:
2059+ -->
2060+ <rule from="^http://(ar|mx)\.autos\.yahoo\.com/+"
2061+ to="https://$1.autocosmos.yahoo.net/" />
2062+
2063+ <!-- Redirect keeps path and args:
2064+ -->
2065+ <rule from="^http://(de|fr)\.autos\.yahoo\.com/+"
2066+ to="https://$1.cars.yahoo.com/" />
2067+
2068+ <!-- Redirect drops path but not args:
2069+ -->
2070+ <rule from="^http://(au|nz)\.biz\.yahoo\.com/[^?]*"
2071+ to="https://$1.finance.yahoo.com/news" />
2072+
2073+ <!-- Redirect keeps path and args:
2074+ -->
2075+ <rule from="^http://(ar|au|br|ca|cl|de|fr|es|hk|id|ie|in|it|jp|mx|my|no|nz|ph|sg|tw|uk|us|vn)\.careers\.yahoo\.com/+"
2076+ to="https://careers.yahoo.com/$1/" />
2077+
2078+ <!-- Redirect keeps path and args:
2079+ -->
2080+ <rule from="^http://malaysia\.careers\.yahoo\.com/+"
2081+ to="https://careers.yahoo.com/my/" />
2082+
2083+ <!-- Redirect keeps path and args:
2084+ -->
2085+ <rule from="^http://qc\.careers\.yahoo\.com/+"
2086+ to="https://careers.yahoo.com/ca/" />
2087+
2088+ <!-- Redirect preserves forward slash, path, and args:
2089+ -->
2090+ <rule from="^http://cars\.yahoo\.com/"
2091+ to="https://autos.yahoo.com/" />
2092+
2093+ <!-- Redirect drops path and args:
2094+ -->
2095+ <rule from="^http://(?:tw\.help\.cc|help\.cc\.tw)\.yahoo\.com/.*"
2096+ to="https://help.yahoo.com/kb/index?page=home&amp;locale=zh_TW" />
2097+
2098+ <!-- Redirect keeps path and args:
2099+ -->
2100+ <rule from="^http://cn\.yahoo\.com/+"
2101+ to="https://sg.yahoo.com/" />
2102+
2103+ <!-- Redirect keeps path and args:
2104+ -->
2105+ <rule from="^http://(?:cine|espanol\.movies)\.yahoo\.com/+"
2106+ to="https://es-us.cine.yahoo.com/" />
2107+
2108+ <!-- Redirect keeps path and args:
2109+ -->
2110+ <rule from="^http://(?:cl|co|pe|ve)\.deportes\.yahoo\.com/+"
2111+ to="https://es-us.deportes.yahoo.com/" />
2112+ <!-- Redirect keeps path and args:
2113+ -->
2114+ <rule from="^http://es\.deportes\.yahoo\.com/+"
2115+ to="https://es.eurosport.yahoo.com/" />
2116+
2117+ <!-- Redirect keeps path but not args:
2118+ -->
2119+ <rule from="^http://au\.dir\.yahoo\.com/+([^?]*).*"
2120+ to="https://au.search.yahoo.com/web?fr=" />
2121+
2122+ <rule from="^http://(?:dk|no|ru)\.yahoo\.com/+"
2123+ to="https://www.yahoo.com/" />
2124+
2125+ <!-- Redirect keeps path and args:
2126+ -->
2127+ <rule from="^http://e1\.yahoo\.com/+"
2128+ to="https://espanol.yahoo.com/" />
2129+
2130+ <rule from="^http://hk\.ent\.yahoo\.com/+"
2131+ to="https://hk.celebrity.yahoo.com/" />
2132+
2133+ <rule from="^http://java\.europe\.yahoo\.com/"
2134+ to="https://adgallery.zenfs.com/" />
2135+
2136+ <rule from="^http://fr\.eurosport\.yahoo\.com/"
2137+ to="https://fr.sports.yahoo.com/" />
2138+
2139+ <!-- Server drops path and args:
2140+ -->
2141+ <rule from="^http://es\.everything\.yahoo\.com/.*"
2142+ to="https://es.todo.yahoo.com/" />
2143+
2144+ <rule from="^http://fantasysports\.yahoo\.com/(?=$|\?)"
2145+ to="https://sports.yahoo.com/fantasy" />
2146+
2147+ <!-- Server drops path but not args:
2148+ -->
2149+ <rule from="^http://es\.laliga\.fantasysports\.yahoo\.com/+"
2150+ to="https://es.eurosport.yahoo.com/fantasy/la-liga/" />
2151+
2152+ <rule from="^http://feedback\.yahoo\.com/"
2153+ to="https://yahoo.uservoice.com/" />
2154+
2155+ <rule from="^http://(i)?chart\.finance\.yahoo\.com/"
2156+ to="https://$1chart.yahoo.com/" />
2157+
2158+ <!-- Redirect drops path buy not args:
2159+ -->
2160+ <rule from="^http://connectedtv\.yahoo\.com/[^?]*"
2161+ to="https://smarttv.yahoo.com/" />
2162+
2163+ <!-- Server keeps path and args:
2164+ -->
2165+ <rule from="^http://kr\.finance\.yahoo\.com/"
2166+ to="https://tools.search.yahoo.com/kr-eol.html" />
2167+
2168+ <rule from="^http://(au|nz)\.food\.yahoo\.com/"
2169+ to="https://$1.lifestyle.yahoo.com/food/" />
2170+
2171+ <!-- Server keeps path and args:
2172+ -->
2173+ <rule from="^http://de\.games\.yahoo\.com/+"
2174+ to="https://de.spiele.yahoo.com/" />
2175+
2176+ <!-- Server keeps path and args:
2177+ -->
2178+ <rule from="^http://(?:id|malaysia|nz|ph)\.games\.yahoo\.com/+"
2179+ to="https://games.yahoo.com/" />
2180+
2181+ <!-- Redirect drops path and args:
2182+ -->
2183+ <rule from="^http://ie\.(finance|groups|lifestyle)\.yahoo\.com/.*"
2184+ to="https://uk.$1.yahoo.com/" />
2185+
2186+ <!-- Redirect drops path but not args:
2187+ -->
2188+ <rule from="^http://au\.(?:answer|forum)s\.yahoo\.com/[^?]*"
2189+ to="https://au.answers.yahoo.com/" />
2190+
2191+ <!-- Redirect drops path and args:
2192+ -->
2193+ <rule from="^http://kr\.(?:gugi|maps|searchad)\.yahoo\.com/.*"
2194+ to="https://tools.search.yahoo.com/kr-eol.html" />
2195+
2196+ <rule from="^http://fr\.help\.yahoo\.com/+"
2197+ to="https://help.yahoo.com/l/fr/yahoo/helpcentral/" />
2198+
2199+ <!-- Redirect drops path and args:
2200+ -->
2201+ <rule from="^http://help\.cc\.hk\.yahoo\.com/.*"
2202+ to="https://help.yahoo.com/kb/index?page=home&amp;locale=zh_HK" />
2203+
2204+ <!-- Redirect keeps path and args:
2205+ -->
2206+ <rule from="^http://(ar|es-us|mx)\.lifestyle\.yahoo\.com/+"
2207+ to="https://$1.mujer.yahoo.com/" />
2208+
2209+ <rule from="^http://ca\.(?:lifestyle|shine)\.yahoo\.com/"
2210+ to="https://ca.shine.yahoo.com/" />
2211+
2212+ <!-- Redirect drops path and args:
2213+ -->
2214+ <rule from="^http://fr\.local\.yahoo\.com/.*"
2215+ to="https://fr.yahoo.com/" />
2216+
2217+
2218+ <!-- Redirect drops path and args:
2219+ -->
2220+ <rule from="^http://es\.maps\.yahoo\.com/.*"
2221+ to="https://es.search.yahoo.com/search/es?p=callejero+itinerarios&amp;y=y" />
2222+
2223+ <!-- Redirect drops path and args:
2224+ -->
2225+ <rule from="^http://in\.maps\.yahoo\.com/.*"
2226+ to="https://maps.yahoo.com/" />
2227+
2228+ <!-- Redirect keeps path and args:
2229+ -->
2230+ <rule from="^http://mx\.maps\.yahoo\.com/+"
2231+ to="https://espanol.maps.yahoo.com/" />
2232+
2233+ <!-- Redirect keeps path and args:
2234+ -->
2235+ <rule from="^http://nz\.maps\.yahoo\.com/+"
2236+ to="https://nz.search.yahoo.com/search/maps/" />
2237+
2238+ <!-- Redirect drops path and args:
2239+ -->
2240+ <rule from="^http://ie\.messenger\.yahoo\.com/.*"
2241+ to="https://uk.messenger.yahoo.com/" />
2242+
2243+ <!-- Redirect drops path but not args:
2244+ -->
2245+ <rule from="^http://nz\.messenger\.yahoo\.com/[^?].*"
2246+ to="https://messenger.yahoo.com/" />
2247+
2248+ <!-- Redirect drops path and args:
2249+ -->
2250+ <rule from="^http://ie\.mobile\.yahoo\.com/.*"
2251+ to="https://uk.mobile.yahoo.com/" />
2252+
2253+ <!-- Redirect keeps path and args:
2254+ -->
2255+ <rule from="^http://tw\.music\.yahoo\.com/+"
2256+ to="https://tw.music.yahoo.net/" />
2257+
2258+ <!-- Redirect drops path and args:
2259+ -->
2260+ <rule from="^http://(?:axis|(?:dk|no)\.mobile|dk\.news)\.yahoo\.com/.*"
2261+ to="https://www.yahoo.com/" />
2262+
2263+ <!-- Redirect keeps path and args:
2264+ -->
2265+ <rule from="^http://es\.movies\.yahoo\.com/+"
2266+ to="https://es.cine.yahoo.com/" />
2267+
2268+ <!-- Redirect keeps path and args:
2269+ -->
2270+ <rule from="^http://(br|fr|it)\.movies\.yahoo\.com/+"
2271+ to="https://$1.cinema.yahoo.com/" />
2272+
2273+ <!-- This rule must be above the main one:
2274+ -->
2275+ <rule from="^http://dps\.msg\.yahoo\.com/"
2276+ to="https://ycpi-mail-dps.msg.yahoo.com/" />
2277+
2278+ <!-- Redirect drops path and args:
2279+ -->
2280+ <rule from="^http://hk\.(?:music|tv)\.yahoo\.com/.*"
2281+ to="https://hk.celebrity.yahoo.com/music/" />
2282+
2283+ <rule from="^http://(ar|br|co|es|mx|pe)\.news\.yahoo\.com/+"
2284+ to="https://$1.noticias.yahoo.com/" />
2285+
2286+ <!-- Redirect drops paths and args:
2287+ -->
2288+ <rule from="^http://ie\.news\.yahoo\.com/.*"
2289+ to="https://uk.news.yahoo.com/n/news_ireland.html" />
2290+
2291+ <rule from="^http://on\.yahoo\.com/+"
2292+ to="https://pilotx1.yahoo.com/" />
2293+
2294+ <!-- Cert only matches us.rd,
2295+ all appear equivalent.
2296+ -->
2297+ <rule from="^http://rds?\.yahoo\.com/"
2298+ to="https://us.rd.yahoo.com/" />
2299+
2300+ <rule from="^http://(ar|cl|co|es-us|mx|pe|ve)\.safely\.yahoo\.com/+"
2301+ to="https://$1.seguridad.yahoo.com/" />
2302+
2303+ <rule from="^http://malaysia\.safely\.yahoo\.com/+"
2304+ to="https://my.safely.yahoo.com/" />
2305+
2306+ <!-- Redirect drops paths and args:
2307+ -->
2308+ <rule from="^http://cn\.search\.yahoo\.com/.*"
2309+ to="https://sg.search.yahoo.com/" />
2310+
2311+ <!-- Redirect drops paths and args:
2312+ -->
2313+ <rule from="^http://kr\.(?:images\.)?search\.yahoo\.com/.*"
2314+ to="https://kr.search.yahoo.com/" />
2315+
2316+ <rule from="^http://my\.images\.search\.yahoo\.com/"
2317+ to="https://malaysia.images.search.yahoo.com/" />
2318+
2319+ <!-- Redirect keeps path and args:
2320+ -->
2321+ <rule from="^http://nz\.maps\.search\.yahoo\.com/+"
2322+ to="https://nz.search.yahoo.com/" />
2323+
2324+ <rule from="^http://my\.search\.yahoo\.com/+"
2325+ to="https://malaysia.search.yahoo.com/" />
2326+
2327+ <!-- Redirect drops path but not args:
2328+ -->
2329+ <rule from="^http://(de|es|fr|it|uk)\.solutions\.yahoo\.com/[^?]*"
2330+ to="https://$1.adspecs.yahoo.com/" />
2331+
2332+ <rule from="^http://sport\.yahoo\.com/+"
2333+ to="https://sports.yahoo.com/" />
2334+
2335+ <rule from="^http://(de|es|uk)\.sports\.yahoo\.com/+"
2336+ to="https://$1.eurosport.yahoo.com/" />
2337+
2338+ <rule from="^http://in\.sports\.yahoo\.com/+$"
2339+ to="https://cricket.yahoo.com/" />
2340+
2341+ <!-- Server drops paths but not args:
2342+ -->
2343+ <rule from="^http://au\.todaytonight\.yahoo\.com/+\??$"
2344+ to="https://au.news.yahoo.com/today-tonight/" />
2345+
2346+ <rule from="^http://au\.todaytonight\.yahoo\.com/[^?]*"
2347+ to="https://au.news.yahoo.com/today-tonight/" />
2348+
2349+ <!-- Redirect drops path but not args:
2350+ -->
2351+ <rule from="^http://(au|nz)\.travel\.yahoo\.com/[^?]*"
2352+ to="https://$1.totaltravel.yahoo.com/" />
2353+
2354+ <!-- Redirect keeps path and args:
2355+ -->
2356+ <rule from="^http://ca\.travel\.yahoo\.com/+"
2357+ to="https://travel.yahoo.com/" />
2358+
2359+ <!-- Redirect drops path and args:
2360+ -->
2361+ <rule from="^http://(my|ph)\.travel\.yahoo\.com/.*"
2362+ to="https://$1.news.yahoo.com/travel/" />
2363+
2364+ <!-- Redirect drops path and args:
2365+ -->
2366+ <rule from="^http://uk\.travel\.yahoo\.com/.*"
2367+ to="https://uk.lifestyle.yahoo.com/travel/" />
2368+
2369+ <rule from="^http://ca\.tv\.yahoo\.com/+"
2370+ to="https://tv.yahoo.com/" />
2371+
2372+ <!-- Redirect keeps path and args:
2373+ -->
2374+ <rule from="^http://pe\.tv\.yahoo\.com/+"
2375+ to="https://es-us.tv.yahoo.com/" />
2376+
2377+ <rule from="^http://((?:br|ca|de|es|es-us|fr|it|mx|uk)\.)?video\.yahoo\.com/+"
2378+ to="https://$1screen.yahoo.com/" />
2379+
2380+ <!-- Redirect drops path and args:
2381+ -->
2382+ <rule from="^http://(ar|co|in)\.video\.yahoo\.com/.*"
2383+ to="https://$1.screen.yahoo.com/" />
2384+
2385+ <!-- Redirect drops path and args:
2386+ -->
2387+ <rule from="^http://au\.video\.yahoo\.com/.*"
2388+ to="https://au.tv.yahoo.com/plus7/" />
2389+
2390+ <!-- Redirect keeps path and args:
2391+ -->
2392+ <rule from="^http://[pv]e\.video\.yahoo\.com/+"
2393+ to="https://es-us.screen.yahoo.com/" />
2394+
2395+ <!-- Redirect drops path and args:
2396+ -->
2397+ <rule from="^http://hk\.video\.yahoo\.com/.*"
2398+ to="https://help.yahoo.com/kb/index?page=home&amp;locale=zh_HK" />
2399+
2400+ <!-- Server doesn't redirect:
2401+ -->
2402+ <rule from="^http://my\.video\.yahoo\.com/"
2403+ to="https://malaysia.video.yahoo.com/" />
2404+
2405+ <rule from="^http://nz\.video\.yahoo\.com/+(?:\?.*)?$"
2406+ to="https://nz.news.yahoo.com/video/" />
2407+
2408+ <!-- Redirect keeps path and args:
2409+ -->
2410+ <rule from="^http://(ar|es)\.weather\.yahoo\.com/+"
2411+ to="https://$1.tiempo.yahoo.com/" />
2412+
2413+ <!-- Redirect keeps path and args:
2414+ -->
2415+ <rule from="^http://(cl|co|mx|pe|ve)\.weather\.yahoo\.com/+"
2416+ to="https://$1.clima.yahoo.com/" />
2417+
2418+ <!-- Redirect keeps path and args:
2419+ -->
2420+ <rule from="^http://espanol\.weather\.yahoo\.com/+"
2421+ to="https://es-us.clima.yahoo.com/" />
2422+
2423+ <!-- Redirect keeps path and args:
2424+ -->
2425+ <rule from="^http://(fr|it)\.weather\.yahoo\.com/+"
2426+ to="https://$1.meteo.yahoo.com/" />
2427+
2428+ <!-- Redirect drops path and args:
2429+ -->
2430+ <rule from="^http://tw\.weather\.yahoo\.com/.*"
2431+ to="https://tw.news.yahoo.com/weather-forecast/" />
2432+
2433+ <!-- Redirect drops path but not args:
2434+ -->
2435+ <rule from="^http://widgets\.yahoo\.com/[^?]*"
2436+ to="https://www.yahoo.com/" />
2437+
2438+ <rule from="^http://((?:\w\w|fr-ca\.actualites|address|\w\w\.address|admanager|(?:\w\w|global)\.adserver|adspecs|\w+\.adspecs|\w+\.adspecs-new|advertising|\w\w\.advertising|beap\.adx|c5a?\.ah|(?:s-)?cookex\.amp|(?:[aosz]|apac|y3?)\.analytics|anc|answers|(?:\w\w|espanol|malaysia)\.answers|antispam|\w\w\.antispam|vn\.antoan|au\.apps|global\.ard|astrology|\w\w\.astrology|hk\.(?:(?:info|f1\.master|f1\.page|search|store|edit\.store|user)\.)?auctions|autos|\w\w\.autos|ar\.ayuda|(?:clicks\.beap|csc\.beap|pn1|row|us)\.bc|tw\.bid|tw\.(?:campaign|master|mb|page|search|store|user)\.bid|(?:m\.)?tw\.bigdeals|tw\.billing|biz|boss|(?:tw\.partner|tw)\.buy|(?:\w\w\.)?calendar|careers|\w\w\.cars|(?:\w\w|es-us)\.celebridades|(?:\w\w\.)?celebrity|tw\.charity|i?chart|(?:\w\w|es-us)\.cine|\w\w\.cinema|(?:\w\w|es-us)\.clima|migration\.cn|(?:deveopers\.)?commercecentral|br\.contribuidores|(?:uk\.)?contributor|au\.dating|(?:\w\w|es-us)\.deportes|developer|tw\.dictionary|dir|downloads|s-b\.dp|(?:eu\.|na\.|sa\.|tw\.)?edit|tw\.(?:ysm\.)?emarketing|en-maktoob|\w\w\.entertainment|espanol|edit\.europe|eurosport|(?:de|es|it|uk)\.eurosport|everything|\w\w\.everything|\w+\.fantasysports|au\.fango|tw\.fashion|br\.financas|finance|(?:\w\w|tw\.chart|espanol|tw\.futures|streamerapi)\.finance|(?:\w\w|es-us)\.finanzas|nz\.rss\.food|nz\.forums|games|(?:au|ca|uk)\.games|geo|gma|groups|(?:\w\w|asia|espanol|es-us|fr-ca|moderators)\.groups|health|help|(?:\w\w|secure)\.help|homes|(?:tw|tw\.v2)\.house|info|\w\w\.info|tw\.tool\.ks|au\.launch|legalredirect|(?:\w\w)\.lifestyle|(?:gh\.bouncer\.)?login|us\.l?rd|local|\w\w\.local|m|r\.m|\w\w\.m|mail|(?:\w\w\.overview|[\w-]+(?:\.c\.yom)?)\.mail|maktoob|malaysia|tw\.(?:user\.)?mall|maps|(?:\w\w|espanol|sgws2)\.maps|messenger|(?:\w\w|malaysia)\.messenger|\w\w\.meteo|mlogin|mobile|(?:\w\w|espanol|malaysia)\.mobile|tw\.(?:campaign\.)?money|tw\.movie|movies|(?:au|ca|nz|au\.rss|nz\.rss|tw|uk)\.movies|[\w.-]+\.msg|(?:\w\w|es-us)\.mujer|music|ca\.music|[\w-]+\.musica|my|us\.my|de\.nachrichten|ucs\.netsvs|news|(?:au|ca|fr|gr|hk|in|nz|ph|nz\.rss|sg|tw|uk)\.news|cookiex\.ngd|(?:\w\w|es-us)\.noticias|omg|(?:\w\w|es-us)\.omg|au\.oztips|rtb\.pclick|pilotx1|pipes|play|playerio|privacy|profile|tw\.promo|(?:au|hk|nz)\.promotions|publishing|(?:analytics|mailapps|media|ucs|us-locdrop|video)\.query|hk\.rd|(?:\w\w\.|fr-ca\.)?safely|screen|(?:\w\w|es-us)\.screen|scribe|search|(?:\w\w|w\w\.blog|\w\w\.dictionary|finance|\w\w\.finance|images|\w\w\.images|\w\w\.knowledge|\w\w\.lifestyle|\w\w\.local|malaysia|movies|\w\w\.movies|news|\w\w\.news|malaysia\.news|r|recipes|\w\w\.recipes|shine|shopping|\w\w\.shopping|sports|\w\w\.sports|tools|au\.tv|video|\w\w\.video|malaysia\.video)\.search|sec|rtb\.pclick\.secure|security|tw\.security|\w\w\.seguranca|\w\w\.seguridad|es-us\.seguridad|\w\w\.seguro|tw\.serviceplus|settings|shine|ca\.shine|shopping|ca\.shopping|\w+\.sitios|dashboard\.slingstone|(?:au\.|order\.)?smallbusiness|smarttv|rd\.software|de\.spiele|sports|(?:au|ca|fr|hk|nz|ph|profiles|au\.rss|nz\.rss|tw)\.sports|tw\.stock|au\.thehype|\w\w\.tiempo|es\.todo|toolbar|(?:\w\w|data|malaysia)\.toolbar|(?:au|nz)\.totaltravel|transparency|travel|tw\.travel||tv|(?:ar|au|de|fr|es|es-us|it|mx|nz|au\.rss|uk)\.tv|tw\.uwant|(?:mh|nz|qos|yep)\.video|weather|(?:au|ca|hk|in|nz|sg|ph|uk|us)\.weather|de\.wetter|www|au\.yel|video\.media\.yql|dmros\.ysm)\.)?yahoo\.com/"
2439+ to="https://$1yahoo.com/" />
2440+
2441+ <rule from="^http://([\w-]+)\.yahoofs\.com/"
2442+ to="https://$1.yahoofs.com/" />
2443+
2444+ <rule from="^http://yhoo\.it/"
2445+ to="https://bit.ly/" />
2446+
2447+ <rule from="^http://(\w+)\.zenfs\.com/"
2448+ to="https://$1.zenfs.com/" />
2449+
2450+</ruleset>
searx/https_rules/YouTube.xmlnew file+46
@@ -0,0 +1,46 @@
1+<ruleset name="YouTube (partial)">
2+
3+ <target host="youtube.com" />
4+ <target host="*.youtube.com" />
5+ <exclusion pattern="^http://(?:www\.)?youtube\.com/crossdomain\.xml"/>
6+ <exclusion pattern="^http://(?:www\.)?youtube\.com/(?:apiplayer|api_video_info)"/>
7+ <exclusion pattern="^http://(?:[^/@:\.]+\.)?ytimg\.com/.*apiplayer[0-9]*\.swf"/>
8+ <target host="*.ytimg.com" />
9+ <target host="youtu.be" />
10+ <target host="youtube-nocookie.com"/>
11+ <target host="www.youtube-nocookie.com"/>
12+ <target host="*.googlevideo.com"/>
13+ <exclusion pattern="^http://([^/@:\.]+)\.googlevideo\.com/crossdomain\.xml"/>
14+
15+
16+ <!-- Not secured by server:
17+ -->
18+ <!--securecookie host="^\.youtube\.com$" name="^(GEUP|PREF|VISITOR_INFO1_LIVE|YSC)$" /-->
19+
20+ <!-- observed ^. cookies:
21+ - use_hitbox
22+ - VISITOR_INFO1_LIVE
23+ - recently_watched_video_id_list
24+ - .youtube.com -->
25+ <securecookie host="^\.youtube\.com" name=".*"/>
26+
27+
28+ <rule from="^http://(www\.)?youtube\.com/"
29+ to="https://$1youtube.com/"/>
30+
31+ <rule from="^http://(br|de|es|fr|il|img|insight|jp|m|nl|uk)\.youtube\.com/"
32+ to="https://$1.youtube.com/"/>
33+
34+ <rule from="^http://([^/@:\.]+)\.ytimg\.com/"
35+ to="https://$1.ytimg.com/"/>
36+
37+ <rule from="^http://youtu\.be/"
38+ to="https://youtu.be/"/>
39+
40+ <rule from="^http://(?:www\.)?youtube-nocookie\.com/"
41+ to="https://www.youtube-nocookie.com/"/>
42+
43+ <rule from="^http://([^/@:\.]+)\.googlevideo\.com/"
44+ to="https://$1.googlevideo.com/"/>
45+
46+</ruleset>
searx/query.py+23−20
@@ -31,30 +31,31 @@ class Query(object):
3131 def __init__(self, query, blocked_engines):
3232 self.query = query
3333 self.blocked_engines = []
34−
34+
3535 if blocked_engines:
3636 self.blocked_engines = blocked_engines
37−
37+
3838 self.query_parts = []
3939 self.engines = []
4040 self.languages = []
41−
42− # parse query, if tags are set, which change the serch engine or search-language
41+
42+ # parse query, if tags are set, which
43+ # change the serch engine or search-language
4344 def parse_query(self):
4445 self.query_parts = []
45−
46+
4647 # split query, including whitespaces
4748 raw_query_parts = re.split(r'(\s+)', self.query)
48−
49+
4950 parse_next = True
50−
51+
5152 for query_part in raw_query_parts:
5253 if not parse_next:
5354 self.query_parts[-1] += query_part
5455 continue
55−
56+
5657 parse_next = False
57−
58+
5859 # part does only contain spaces, skip
5960 if query_part.isspace()\
6061 or query_part == '':
@@ -62,15 +63,17 @@ class Query(object):
6263 self.query_parts.append(query_part)
6364 continue
6465
65− # this force a language
66+ # this force a language
6667 if query_part[0] == ':':
6768 lang = query_part[1:].lower()
6869
69− # check if any language-code is equal with declared language-codes
70+ # check if any language-code is equal with
71+ # declared language-codes
7072 for lc in language_codes:
7173 lang_id, lang_name, country = map(str.lower, lc)
7274
73− # if correct language-code is found, set it as new search-language
75+ # if correct language-code is found
76+ # set it as new search-language
7477 if lang == lang_id\
7578 or lang_id.startswith(lang)\
7679 or lang == lang_name\
@@ -89,23 +92,24 @@ class Query(object):
8992 parse_next = True
9093 self.engines.append({'category': 'none',
9194 'name': engine_shortcuts[prefix]})
92−
95+
9396 # check if prefix is equal with engine name
9497 elif prefix in engines\
95− and not prefix in self.blocked_engines:
98+ and prefix not in self.blocked_engines:
9699 parse_next = True
97100 self.engines.append({'category': 'none',
98101 'name': prefix})
99102
100103 # check if prefix is equal with categorie name
101104 elif prefix in categories:
102− # using all engines for that search, which are declared under that categorie name
105+ # using all engines for that search, which
106+ # are declared under that categorie name
103107 parse_next = True
104108 self.engines.extend({'category': prefix,
105109 'name': engine.name}
106110 for engine in categories[prefix]
107− if not engine in self.blocked_engines)
108−
111+ if engine not in self.blocked_engines)
112+
109113 # append query part to query_part list
110114 self.query_parts.append(query_part)
111115
@@ -114,14 +118,13 @@ class Query(object):
114118 self.query_parts[-1] = search_query
115119 else:
116120 self.query_parts.append(search_query)
117−
121+
118122 def getSearchQuery(self):
119123 if len(self.query_parts):
120124 return self.query_parts[-1]
121125 else:
122126 return ''
123−
127+
124128 def getFullQuery(self):
125129 # get full querry including whitespaces
126130 return string.join(self.query_parts, '')
127−
searx/search.py+72−42
@@ -22,7 +22,7 @@ from datetime import datetime
2222from operator import itemgetter
2323from urlparse import urlparse, unquote
2424from searx.engines import (
25− categories, engines, engine_shortcuts
25+ categories, engines
2626)
2727from searx.languages import language_codes
2828from searx.utils import gen_useragent
@@ -39,7 +39,13 @@ def default_request_params():
3939
4040
4141# create a callback wrapper for the search engine results
42−def make_callback(engine_name, results, suggestions, answers, infoboxes, callback, params):
42+def make_callback(engine_name,
43+ results,
44+ suggestions,
45+ answers,
46+ infoboxes,
47+ callback,
48+ params):
4349
4450 # creating a callback wrapper for the search engine results
4551 def process_callback(response, **kwargs):
@@ -95,7 +101,7 @@ def make_callback(engine_name, results, suggestions, answers, infoboxes, callbac
95101def content_result_len(content):
96102 if isinstance(content, basestring):
97103 content = re.sub('[,;:!?\./\\\\ ()-_]', '', content)
98− return len(content)
104+ return len(content)
99105 else:
100106 return 0
101107
@@ -126,7 +132,8 @@ def score_results(results):
126132
127133 # strip multiple spaces and cariage returns from content
128134 if 'content' in res:
129− res['content'] = re.sub(' +', ' ', res['content'].strip().replace('\n', ''))
135+ res['content'] = re.sub(' +', ' ',
136+ res['content'].strip().replace('\n', ''))
130137
131138 # get weight of this engine if possible
132139 if hasattr(engines[res['engine']], 'weight'):
@@ -139,8 +146,12 @@ def score_results(results):
139146 duplicated = False
140147 for new_res in results:
141148 # remove / from the end of the url if required
142− p1 = res['parsed_url'].path[:-1] if res['parsed_url'].path.endswith('/') else res['parsed_url'].path # noqa
143− p2 = new_res['parsed_url'].path[:-1] if new_res['parsed_url'].path.endswith('/') else new_res['parsed_url'].path # noqa
149+ p1 = res['parsed_url'].path[:-1]\
150+ if res['parsed_url'].path.endswith('/')\
151+ else res['parsed_url'].path
152+ p2 = new_res['parsed_url'].path[:-1]\
153+ if new_res['parsed_url'].path.endswith('/')\
154+ else new_res['parsed_url'].path
144155
145156 # check if that result is a duplicate
146157 if res['host'] == new_res['host'] and\
@@ -153,7 +164,8 @@ def score_results(results):
153164 # merge duplicates together
154165 if duplicated:
155166 # using content with more text
156− if content_result_len(res.get('content', '')) > content_result_len(duplicated.get('content', '')):
167+ if content_result_len(res.get('content', '')) >\
168+ content_result_len(duplicated.get('content', '')):
157169 duplicated['content'] = res['content']
158170
159171 # increase result-score
@@ -182,17 +194,25 @@ def score_results(results):
182194
183195 for i, res in enumerate(results):
184196 # FIXME : handle more than one category per engine
185− category = engines[res['engine']].categories[0] + ':' + '' if 'template' not in res else res['template']
186−
187− current = None if category not in categoryPositions else categoryPositions[category]
188−
189− # group with previous results using the same category if the group can accept more result and is not too far from the current position
190− if current != None and (current['count'] > 0) and (len(gresults) - current['index'] < 20):
191− # group with the previous results using the same category with this one
197+ category = engines[res['engine']].categories[0] + ':' + ''\
198+ if 'template' not in res\
199+ else res['template']
200+
201+ current = None if category not in categoryPositions\
202+ else categoryPositions[category]
203+
204+ # group with previous results using the same category
205+ # if the group can accept more result and is not too far
206+ # from the current position
207+ if current is not None and (current['count'] > 0)\
208+ and (len(gresults) - current['index'] < 20):
209+ # group with the previous results using
210+ # the same category with this one
192211 index = current['index']
193212 gresults.insert(index, res)
194213
195− # update every index after the current one (including the current one)
214+ # update every index after the current one
215+ # (including the current one)
196216 for k in categoryPositions:
197217 v = categoryPositions[k]['index']
198218 if v >= index:
@@ -206,7 +226,7 @@ def score_results(results):
206226 gresults.append(res)
207227
208228 # update categoryIndex
209− categoryPositions[category] = { 'index' : len(gresults), 'count' : 8 }
229+ categoryPositions[category] = {'index': len(gresults), 'count': 8}
210230
211231 # return gresults
212232 return gresults
@@ -215,21 +235,21 @@ def score_results(results):
215235def merge_two_infoboxes(infobox1, infobox2):
216236 if 'urls' in infobox2:
217237 urls1 = infobox1.get('urls', None)
218− if urls1 == None:
238+ if urls1 is None:
219239 urls1 = []
220240 infobox1.set('urls', urls1)
221241
222242 urlSet = set()
223243 for url in infobox1.get('urls', []):
224244 urlSet.add(url.get('url', None))
225−
245+
226246 for url in infobox2.get('urls', []):
227247 if url.get('url', None) not in urlSet:
228248 urls1.append(url)
229249
230250 if 'attributes' in infobox2:
231251 attributes1 = infobox1.get('attributes', None)
232− if attributes1 == None:
252+ if attributes1 is None:
233253 attributes1 = []
234254 infobox1.set('attributes', attributes1)
235255
@@ -237,14 +257,14 @@ def merge_two_infoboxes(infobox1, infobox2):
237257 for attribute in infobox1.get('attributes', []):
238258 if attribute.get('label', None) not in attributeSet:
239259 attributeSet.add(attribute.get('label', None))
240−
260+
241261 for attribute in infobox2.get('attributes', []):
242262 attributes1.append(attribute)
243263
244264 if 'content' in infobox2:
245265 content1 = infobox1.get('content', None)
246266 content2 = infobox2.get('content', '')
247− if content1 != None:
267+ if content1 is not None:
248268 if content_result_len(content2) > content_result_len(content1):
249269 infobox1['content'] = content2
250270 else:
@@ -257,12 +277,12 @@ def merge_infoboxes(infoboxes):
257277 for infobox in infoboxes:
258278 add_infobox = True
259279 infobox_id = infobox.get('id', None)
260− if infobox_id != None:
280+ if infobox_id is not None:
261281 existingIndex = infoboxes_id.get(infobox_id, None)
262− if existingIndex != None:
282+ if existingIndex is not None:
263283 merge_two_infoboxes(results[existingIndex], infobox)
264− add_infobox=False
265−
284+ add_infobox = False
285+
266286 if add_infobox:
267287 results.append(infobox)
268288 infoboxes_id[infobox_id] = len(results)-1
@@ -311,9 +331,6 @@ class Search(object):
311331 if not self.request_data.get('q'):
312332 raise Exception('noquery')
313333
314− # set query
315− self.query = self.request_data['q']
316−
317334 # set pagenumber
318335 pageno_param = self.request_data.get('pageno', '1')
319336 if not pageno_param.isdigit() or int(pageno_param) < 1:
@@ -321,9 +338,13 @@ class Search(object):
321338
322339 self.pageno = int(pageno_param)
323340
324− # parse query, if tags are set, which change the serch engine or search-language
325− query_obj = Query(self.query, self.blocked_engines)
326− query_obj.parse_query()
341+ # parse query, if tags are set, which change
342+ # the serch engine or search-language
343+ query_obj = Query(self.request_data['q'], self.blocked_engines)
344+ query_obj.parse_query()
345+
346+ # set query
347+ self.query = query_obj.getSearchQuery()
327348
328349 # get last selected language in query, if possible
329350 # TODO support search with multible languages
@@ -334,25 +355,29 @@ class Search(object):
334355
335356 self.categories = []
336357
337− # if engines are calculated from query, set categories by using that informations
358+ # if engines are calculated from query,
359+ # set categories by using that informations
338360 if self.engines:
339361 self.categories = list(set(engine['category']
340362 for engine in self.engines))
341363
342− # otherwise, using defined categories to calculate which engines should be used
364+ # otherwise, using defined categories to
365+ # calculate which engines should be used
343366 else:
344367 # set used categories
345368 for pd_name, pd in self.request_data.items():
346369 if pd_name.startswith('category_'):
347370 category = pd_name[9:]
348371 # if category is not found in list, skip
349− if not category in categories:
372+ if category not in categories:
350373 continue
351374
352375 # add category to list
353376 self.categories.append(category)
354377
355− # if no category is specified for this search, using user-defined default-configuration which (is stored in cookie)
378+ # if no category is specified for this search,
379+ # using user-defined default-configuration which
380+ # (is stored in cookie)
356381 if not self.categories:
357382 cookie_categories = request.cookies.get('categories', '')
358383 cookie_categories = cookie_categories.split(',')
@@ -360,16 +385,18 @@ class Search(object):
360385 if ccateg in categories:
361386 self.categories.append(ccateg)
362387
363− # if still no category is specified, using general as default-category
388+ # if still no category is specified, using general
389+ # as default-category
364390 if not self.categories:
365391 self.categories = ['general']
366392
367− # using all engines for that search, which are declared under the specific categories
393+ # using all engines for that search, which are
394+ # declared under the specific categories
368395 for categ in self.categories:
369396 self.engines.extend({'category': categ,
370397 'name': x.name}
371398 for x in categories[categ]
372− if not x.name in self.blocked_engines)
399+ if x.name not in self.blocked_engines)
373400
374401 # do search-request
375402 def search(self, request):
@@ -386,7 +413,7 @@ class Search(object):
386413 number_of_searches += 1
387414
388415 # set default useragent
389− #user_agent = request.headers.get('User-Agent', '')
416+ # user_agent = request.headers.get('User-Agent', '')
390417 user_agent = gen_useragent()
391418
392419 # start search-reqest for all selected engines
@@ -400,7 +427,8 @@ class Search(object):
400427 if self.pageno > 1 and not engine.paging:
401428 continue
402429
403− # if search-language is set and engine does not provide language-support, skip
430+ # if search-language is set and engine does not
431+ # provide language-support, skip
404432 if self.lang != 'all' and not engine.language_support:
405433 continue
406434
@@ -412,7 +440,8 @@ class Search(object):
412440 request_params['pageno'] = self.pageno
413441 request_params['language'] = self.lang
414442
415− # update request parameters dependent on search-engine (contained in engines folder)
443+ # update request parameters dependent on
444+ # search-engine (contained in engines folder)
416445 request_params = engine.request(self.query.encode('utf-8'),
417446 request_params)
418447
@@ -431,7 +460,8 @@ class Search(object):
431460 request_params
432461 )
433462
434− # create dictionary which contain all informations about the request
463+ # create dictionary which contain all
464+ # informations about the request
435465 request_args = dict(
436466 headers=request_params['headers'],
437467 hooks=dict(response=callback),
searx/settings.yml+7
@@ -52,6 +52,12 @@ engines:
5252 engine : duckduckgo
5353 shortcut : ddg
5454
55+# api-key required: http://www.faroo.com/hp/api/api.html#key
56+# - name : faroo
57+# engine : faroo
58+# shortcut : fa
59+# api_key : 'apikey' # required!
60+
5561# down - website is under criminal investigation by the UK
5662# - name : filecrop
5763# engine : filecrop
@@ -166,3 +172,4 @@ locales:
166172 es : Español
167173 it : Italiano
168174 nl : Nederlands
175+ ja : 日本語 (Japanese)
searx/settings_robot.yml+3
@@ -4,6 +4,9 @@ server:
44 debug : False
55 request_timeout : 3.0 # seconds
66 base_url: False
7+ themes_path : ""
8+ default_theme : default
9+ https_rewrite : True
710
811engines:
912 - name : general_dummy
searx/static/default/css/style.css+1−1
@@ -77,5 +77,5 @@ tr:hover{background:#ddd}
7777#preferences{top:10px;padding:0;border:0;background:url('../img/preference-icon.png') no-repeat;background-size:28px 28px;opacity:.8;width:28px;height:30px;display:block}#preferences *{display:none}
7878#pagination{clear:both;width:40em}
7979#apis{margin-top:8px;clear:both}
80−@media screen and (max-width:50em){#results{margin:auto;padding:0;width:90%} .github{display:none} .checkbox_container{display:block;width:90%}.checkbox_container label{border-bottom:0}}@media screen and (max-width:75em){#infoboxes{position:inherit;max-width:inherit}#infoboxes .infobox{clear:both}#infoboxes .infobox img{float:left;max-width:10em} #categories{font-size:90%;clear:both}#categories .checkbox_container{margin-top:2px;margin:auto} .right{display:none;postion:fixed !important;top:100px;right:0} #sidebar{position:static;max-width:50em;margin:0 0 2px 0;padding:0;float:none;border:none;width:auto}#sidebar input{border:0} #apis{display:none} #search_url{display:none} .result{border-top:1px solid #e8e7e6;margin:7px 0 6px 0}}.favicon{float:left;margin-right:4px;margin-top:2px}
80+@media screen and (max-width:50em){#results{margin:auto;padding:0;width:90%} .github{display:none} .checkbox_container{display:block;width:90%}.checkbox_container label{border-bottom:0} .right{display:none;postion:fixed !important;top:100px;right:0}}@media screen and (max-width:75em){#infoboxes{position:inherit;max-width:inherit}#infoboxes .infobox{clear:both}#infoboxes .infobox img{float:left;max-width:10em} #categories{font-size:90%;clear:both}#categories .checkbox_container{margin-top:2px;margin:auto} #sidebar{position:static;max-width:50em;margin:0 0 2px 0;padding:0;float:none;border:none;width:auto}#sidebar input{border:0} #apis{display:none} #search_url{display:none} .result{border-top:1px solid #e8e7e6;margin:7px 0 6px 0}}.favicon{float:left;margin-right:4px;margin-top:2px}
8181.preferences_back{background:none repeat scroll 0 0 #3498db;border:0 none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;cursor:pointer;display:inline-block;margin:2px 4px;padding:4px 6px}.preferences_back a{color:#fff}
searx/static/default/less/style.less+8−7
@@ -529,6 +529,14 @@ tr {
529529 border-bottom: 0;
530530 }
531531 }
532+
533+ .right {
534+ display: none;
535+ postion: fixed !important;
536+ top: 100px;
537+ right: 0px;
538+ }
539+
532540}
533541
534542@media screen and (max-width: 75em) {
@@ -558,13 +566,6 @@ tr {
558566 }
559567 }
560568
561− .right {
562− display: none;
563− postion: fixed !important;
564− top: 100px;
565− right: 0px;
566− }
567−
568569 #sidebar {
569570 position: static;
570571 max-width: @results-width;
searx/translations/de/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/de/LC_MESSAGES/messages.po+37−33
@@ -5,11 +5,12 @@
55# Translators:
66# pointhi, 2014
77# stf <stefan.marsiske@gmail.com>, 2014
8+# rike, 2014
89msgid ""
910msgstr ""
1011"Project-Id-Version: searx\n"
1112"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
12−"POT-Creation-Date: 2014-10-01 19:45+0200\n"
13+"POT-Creation-Date: 2014-10-26 19:10+0100\n"
1314"PO-Revision-Date: 2014-03-15 18:40+0000\n"
1415"Last-Translator: pointhi\n"
1516"Language-Team: German "
@@ -20,31 +21,31 @@ msgstr ""
2021"Content-Transfer-Encoding: 8bit\n"
2122"Generated-By: Babel 1.3\n"
2223
23−#: searx/webapp.py:252
24+#: searx/webapp.py:305
2425msgid "{minutes} minute(s) ago"
25−msgstr ""
26+msgstr "vor {minutes} Minute(n)"
2627
27−#: searx/webapp.py:254
28+#: searx/webapp.py:307
2829msgid "{hours} hour(s), {minutes} minute(s) ago"
29−msgstr ""
30+msgstr "vor {hours} Stunde(n), {minutes} Minute(n)"
3031
31−#: searx/engines/__init__.py:164
32+#: searx/engines/__init__.py:177
3233msgid "Page loads (sec)"
3334msgstr "Ladezeit (sek)"
3435
35−#: searx/engines/__init__.py:168
36+#: searx/engines/__init__.py:181
3637msgid "Number of results"
3738msgstr "Trefferanzahl"
3839
39−#: searx/engines/__init__.py:172
40+#: searx/engines/__init__.py:185
4041msgid "Scores"
4142msgstr "Punkte"
4243
43−#: searx/engines/__init__.py:176
44+#: searx/engines/__init__.py:189
4445msgid "Scores per result"
4546msgstr "Punkte pro Treffer"
4647
47−#: searx/engines/__init__.py:180
48+#: searx/engines/__init__.py:193
4849msgid "Errors"
4950msgstr "Fehler"
5051
@@ -69,7 +70,7 @@ msgstr "Einstellungen"
6970#: searx/templates/default/preferences.html:9
7071#: searx/templates/oscar/preferences.html:21
7172msgid "Default categories"
72−msgstr "Standard Kategorien"
73+msgstr "Standardkategorien"
7374
7475#: searx/templates/courgette/preferences.html:15
7576#: searx/templates/default/preferences.html:15
@@ -93,19 +94,19 @@ msgstr "Oberflächensprache"
9394#: searx/templates/default/preferences.html:36
9495#: searx/templates/oscar/preferences.html:50
9596msgid "Autocomplete"
96−msgstr ""
97+msgstr "Autovervollständigung"
9798
9899#: searx/templates/courgette/preferences.html:47
99100#: searx/templates/default/preferences.html:47
100101#: searx/templates/oscar/preferences.html:63
101102msgid "Method"
102−msgstr ""
103+msgstr "Methode"
103104
104105#: searx/templates/courgette/preferences.html:56
105106#: searx/templates/default/preferences.html:56
106107#: searx/templates/oscar/preferences.html:73
107108msgid "Themes"
108−msgstr ""
109+msgstr "Designs"
109110
110111#: searx/templates/courgette/preferences.html:66
111112#: searx/templates/default/preferences.html:66
@@ -145,8 +146,8 @@ msgid ""
145146"These settings are stored in your cookies, this allows us not to store "
146147"this data about you."
147148msgstr ""
148−"Diese Informationen werden in Cookies gespeichert, damit wir keine ihrer "
149−"persönlichen Daten speichern müssen."
149+"Diese Informationen werden in Cookies auf Ihrem Rechner gespeichert, "
150+"damit wir keine Ihrer persönlichen Daten speichern müssen."
150151
151152#: searx/templates/courgette/preferences.html:94
152153#: searx/templates/default/preferences.html:94
@@ -155,8 +156,8 @@ msgid ""
155156"These cookies serve your sole convenience, we don't use these cookies to "
156157"track you."
157158msgstr ""
158−"Diese Cookies dienen ihrer Gemütlichkeit, wir verwenden sie nicht zum "
159−"überwachen."
159+"Diese Cookies dienen einzig Ihrem Komfort, wir verwenden sie nicht, um "
160+"Sie zu überwachen."
160161
161162#: searx/templates/courgette/preferences.html:97
162163#: searx/templates/default/preferences.html:97
@@ -172,30 +173,30 @@ msgstr "Zurück"
172173
173174#: searx/templates/courgette/results.html:12
174175#: searx/templates/default/results.html:12
175−#: searx/templates/oscar/results.html:74
176+#: searx/templates/oscar/results.html:70
176177msgid "Search URL"
177178msgstr "Such-URL"
178179
179180#: searx/templates/courgette/results.html:16
180181#: searx/templates/default/results.html:16
181−#: searx/templates/oscar/results.html:79
182+#: searx/templates/oscar/results.html:75
182183msgid "Download results"
183184msgstr "Ergebnisse herunterladen"
184185
185186#: searx/templates/courgette/results.html:34
186−#: searx/templates/default/results.html:34
187−#: searx/templates/oscar/results.html:51
187+#: searx/templates/default/results.html:42
188+#: searx/templates/oscar/results.html:50
188189msgid "Suggestions"
189190msgstr "Vorschläge"
190191
191192#: searx/templates/courgette/results.html:62
192−#: searx/templates/default/results.html:62
193+#: searx/templates/default/results.html:78
193194#: searx/templates/oscar/results.html:29
194195msgid "previous page"
195196msgstr "vorherige Seite"
196197
197198#: searx/templates/courgette/results.html:73
198−#: searx/templates/default/results.html:73
199+#: searx/templates/default/results.html:89
199200#: searx/templates/oscar/results.html:37
200201msgid "next page"
201202msgstr "nächste Seite"
@@ -209,7 +210,11 @@ msgstr "Suche nach..."
209210#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4
210211#: searx/templates/oscar/stats.html:5
211212msgid "Engine stats"
212−msgstr "Suchmaschienen Statistiken"
213+msgstr "Suchmaschinenstatistik"
214+
215+#: searx/templates/default/results.html:34
216+msgid "Answers"
217+msgstr ""
213218
214219#: searx/templates/oscar/base.html:61
215220msgid "Powered by"
@@ -228,14 +233,12 @@ msgid "home"
228233msgstr ""
229234
230235#: searx/templates/oscar/preferences.html:11
231−#, fuzzy
232236msgid "General"
233237msgstr "Allgemein"
234238
235239#: searx/templates/oscar/preferences.html:12
236−#, fuzzy
237240msgid "Engines"
238−msgstr "Suchmaschienen Statistiken"
241+msgstr ""
239242
240243#: searx/templates/oscar/preferences.html:36
241244msgid "What language do you prefer for search?"
@@ -261,11 +264,10 @@ msgid "Change searx layout"
261264msgstr ""
262265
263266#: searx/templates/oscar/results.html:6
264−#, fuzzy
265267msgid "Search results"
266−msgstr "Trefferanzahl"
268+msgstr ""
267269
268−#: searx/templates/oscar/results.html:68
270+#: searx/templates/oscar/results.html:65
269271msgid "Links"
270272msgstr ""
271273
@@ -340,9 +342,8 @@ msgid "Something went wrong."
340342msgstr ""
341343
342344#: searx/templates/oscar/result_templates/images.html:20
343−#, fuzzy
344345msgid "Get image"
345−msgstr "nächste Seite"
346+msgstr ""
346347
347348#: searx/templates/oscar/result_templates/images.html:21
348349msgid "View source"
@@ -379,3 +380,6 @@ msgstr "IT"
379380msgid "news"
380381msgstr "Neuigkeiten"
381382
383+msgid "map"
384+msgstr "Karte"
385+
searx/translations/en/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/en/LC_MESSAGES/messages.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: PROJECT VERSION\n"
99"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10−"POT-Creation-Date: 2014-10-01 19:45+0200\n"
10+"POT-Creation-Date: 2014-10-26 19:10+0100\n"
1111"PO-Revision-Date: 2014-01-30 15:22+0100\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: en <LL@li.org>\n"
@@ -17,31 +17,31 @@ msgstr ""
1717"Content-Transfer-Encoding: 8bit\n"
1818"Generated-By: Babel 1.3\n"
1919
20−#: searx/webapp.py:252
20+#: searx/webapp.py:305
2121msgid "{minutes} minute(s) ago"
2222msgstr ""
2323
24−#: searx/webapp.py:254
24+#: searx/webapp.py:307
2525msgid "{hours} hour(s), {minutes} minute(s) ago"
2626msgstr ""
2727
28−#: searx/engines/__init__.py:164
28+#: searx/engines/__init__.py:177
2929msgid "Page loads (sec)"
3030msgstr ""
3131
32−#: searx/engines/__init__.py:168
32+#: searx/engines/__init__.py:181
3333msgid "Number of results"
3434msgstr ""
3535
36−#: searx/engines/__init__.py:172
36+#: searx/engines/__init__.py:185
3737msgid "Scores"
3838msgstr ""
3939
40−#: searx/engines/__init__.py:176
40+#: searx/engines/__init__.py:189
4141msgid "Scores per result"
4242msgstr ""
4343
44−#: searx/engines/__init__.py:180
44+#: searx/engines/__init__.py:193
4545msgid "Errors"
4646msgstr ""
4747
@@ -165,30 +165,30 @@ msgstr ""
165165
166166#: searx/templates/courgette/results.html:12
167167#: searx/templates/default/results.html:12
168−#: searx/templates/oscar/results.html:74
168+#: searx/templates/oscar/results.html:70
169169msgid "Search URL"
170170msgstr ""
171171
172172#: searx/templates/courgette/results.html:16
173173#: searx/templates/default/results.html:16
174−#: searx/templates/oscar/results.html:79
174+#: searx/templates/oscar/results.html:75
175175msgid "Download results"
176176msgstr ""
177177
178178#: searx/templates/courgette/results.html:34
179−#: searx/templates/default/results.html:34
180−#: searx/templates/oscar/results.html:51
179+#: searx/templates/default/results.html:42
180+#: searx/templates/oscar/results.html:50
181181msgid "Suggestions"
182182msgstr ""
183183
184184#: searx/templates/courgette/results.html:62
185−#: searx/templates/default/results.html:62
185+#: searx/templates/default/results.html:78
186186#: searx/templates/oscar/results.html:29
187187msgid "previous page"
188188msgstr ""
189189
190190#: searx/templates/courgette/results.html:73
191−#: searx/templates/default/results.html:73
191+#: searx/templates/default/results.html:89
192192#: searx/templates/oscar/results.html:37
193193msgid "next page"
194194msgstr ""
@@ -204,6 +204,10 @@ msgstr ""
204204msgid "Engine stats"
205205msgstr ""
206206
207+#: searx/templates/default/results.html:34
208+msgid "Answers"
209+msgstr ""
210+
207211#: searx/templates/oscar/base.html:61
208212msgid "Powered by"
209213msgstr ""
@@ -255,7 +259,7 @@ msgstr ""
255259msgid "Search results"
256260msgstr ""
257261
258−#: searx/templates/oscar/results.html:68
262+#: searx/templates/oscar/results.html:65
259263msgid "Links"
260264msgstr ""
261265
@@ -350,9 +354,6 @@ msgstr ""
350354msgid "files"
351355msgstr ""
352356
353−msgid "general"
354−msgstr ""
355−
356357msgid "music"
357358msgstr ""
358359
@@ -371,3 +372,6 @@ msgstr ""
371372msgid "news"
372373msgstr ""
373374
375+msgid "map"
376+msgstr ""
377+
searx/translations/es/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/es/LC_MESSAGES/messages.po+32−29
@@ -3,14 +3,14 @@
33# This file is distributed under the same license as the project.
44#
55# Translators:
6−# niazle, 2014
6+# Alejandro León Aznar, 2014
77msgid ""
88msgstr ""
99"Project-Id-Version: searx\n"
1010"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11−"POT-Creation-Date: 2014-10-01 19:45+0200\n"
12−"PO-Revision-Date: 2014-03-04 20:40+0000\n"
13−"Last-Translator: niazle\n"
11+"POT-Creation-Date: 2014-10-26 19:10+0100\n"
12+"PO-Revision-Date: 2014-09-08 11:01+0000\n"
13+"Last-Translator: Alejandro León Aznar\n"
1414"Language-Team: Spanish "
1515"(http://www.transifex.com/projects/p/searx/language/es/)\n"
1616"Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -19,31 +19,31 @@ msgstr ""
1919"Content-Transfer-Encoding: 8bit\n"
2020"Generated-By: Babel 1.3\n"
2121
22−#: searx/webapp.py:252
22+#: searx/webapp.py:305
2323msgid "{minutes} minute(s) ago"
24−msgstr ""
24+msgstr "hace {minutes} minuto(s)"
2525
26−#: searx/webapp.py:254
26+#: searx/webapp.py:307
2727msgid "{hours} hour(s), {minutes} minute(s) ago"
28−msgstr ""
28+msgstr "hace {hours} hora(s) y {minutes} minuto(s)"
2929
30−#: searx/engines/__init__.py:164
30+#: searx/engines/__init__.py:177
3131msgid "Page loads (sec)"
3232msgstr "Tiempo de carga (segundos)"
3333
34−#: searx/engines/__init__.py:168
34+#: searx/engines/__init__.py:181
3535msgid "Number of results"
3636msgstr "Número de resultados"
3737
38−#: searx/engines/__init__.py:172
38+#: searx/engines/__init__.py:185
3939msgid "Scores"
4040msgstr "Puntuaciones"
4141
42−#: searx/engines/__init__.py:176
42+#: searx/engines/__init__.py:189
4343msgid "Scores per result"
4444msgstr "Puntuaciones por resultado"
4545
46−#: searx/engines/__init__.py:180
46+#: searx/engines/__init__.py:193
4747msgid "Errors"
4848msgstr "Errores"
4949
@@ -171,30 +171,30 @@ msgstr "Atrás"
171171
172172#: searx/templates/courgette/results.html:12
173173#: searx/templates/default/results.html:12
174−#: searx/templates/oscar/results.html:74
174+#: searx/templates/oscar/results.html:70
175175msgid "Search URL"
176176msgstr "Buscar URL"
177177
178178#: searx/templates/courgette/results.html:16
179179#: searx/templates/default/results.html:16
180−#: searx/templates/oscar/results.html:79
180+#: searx/templates/oscar/results.html:75
181181msgid "Download results"
182182msgstr "Descargar resultados"
183183
184184#: searx/templates/courgette/results.html:34
185−#: searx/templates/default/results.html:34
186−#: searx/templates/oscar/results.html:51
185+#: searx/templates/default/results.html:42
186+#: searx/templates/oscar/results.html:50
187187msgid "Suggestions"
188188msgstr "Sugerencias"
189189
190190#: searx/templates/courgette/results.html:62
191−#: searx/templates/default/results.html:62
191+#: searx/templates/default/results.html:78
192192#: searx/templates/oscar/results.html:29
193193msgid "previous page"
194194msgstr "Página anterior"
195195
196196#: searx/templates/courgette/results.html:73
197−#: searx/templates/default/results.html:73
197+#: searx/templates/default/results.html:89
198198#: searx/templates/oscar/results.html:37
199199msgid "next page"
200200msgstr "Página siguiente"
@@ -203,13 +203,17 @@ msgstr "Página siguiente"
203203#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
204204#: searx/templates/oscar/search_full.html:5
205205msgid "Search for..."
206−msgstr ""
206+msgstr "Buscar..."
207207
208208#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4
209209#: searx/templates/oscar/stats.html:5
210210msgid "Engine stats"
211211msgstr "Estadísticas del motor de búsqueda"
212212
213+#: searx/templates/default/results.html:34
214+msgid "Answers"
215+msgstr ""
216+
213217#: searx/templates/oscar/base.html:61
214218msgid "Powered by"
215219msgstr ""
@@ -227,14 +231,12 @@ msgid "home"
227231msgstr ""
228232
229233#: searx/templates/oscar/preferences.html:11
230−#, fuzzy
231234msgid "General"
232−msgstr "General"
235+msgstr ""
233236
234237#: searx/templates/oscar/preferences.html:12
235−#, fuzzy
236238msgid "Engines"
237−msgstr "Estadísticas del motor de búsqueda"
239+msgstr ""
238240
239241#: searx/templates/oscar/preferences.html:36
240242msgid "What language do you prefer for search?"
@@ -260,11 +262,10 @@ msgid "Change searx layout"
260262msgstr ""
261263
262264#: searx/templates/oscar/results.html:6
263−#, fuzzy
264265msgid "Search results"
265−msgstr "Número de resultados"
266+msgstr ""
266267
267−#: searx/templates/oscar/results.html:68
268+#: searx/templates/oscar/results.html:65
268269msgid "Links"
269270msgstr ""
270271
@@ -339,9 +340,8 @@ msgid "Something went wrong."
339340msgstr ""
340341
341342#: searx/templates/oscar/result_templates/images.html:20
342−#, fuzzy
343343msgid "Get image"
344−msgstr "Página siguiente"
344+msgstr ""
345345
346346#: searx/templates/oscar/result_templates/images.html:21
347347msgid "View source"
@@ -378,3 +378,6 @@ msgstr "TIC"
378378msgid "news"
379379msgstr "noticias"
380380
381+msgid "map"
382+msgstr "mapa"
383+
searx/translations/fr/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/fr/LC_MESSAGES/messages.po+32−29
@@ -5,14 +5,14 @@
55# Translators:
66# Benjamin Sonntag <benjamin@sonntag.fr>, 2014
77# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
8−# rike <u@451f.org>, 2014
8+# rike, 2014
99msgid ""
1010msgstr ""
1111"Project-Id-Version: searx\n"
1212"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
13−"POT-Creation-Date: 2014-10-01 19:45+0200\n"
14−"PO-Revision-Date: 2014-03-16 07:40+0000\n"
15−"Last-Translator: Benjamin Sonntag <benjamin@sonntag.fr>\n"
13+"POT-Creation-Date: 2014-10-26 19:10+0100\n"
14+"PO-Revision-Date: 2014-09-07 21:24+0000\n"
15+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
1616"Language-Team: French "
1717"(http://www.transifex.com/projects/p/searx/language/fr/)\n"
1818"Plural-Forms: nplurals=2; plural=(n > 1)\n"
@@ -21,31 +21,31 @@ msgstr ""
2121"Content-Transfer-Encoding: 8bit\n"
2222"Generated-By: Babel 1.3\n"
2323
24−#: searx/webapp.py:252
24+#: searx/webapp.py:305
2525msgid "{minutes} minute(s) ago"
26−msgstr "Il y a {minutes} minute(s)"
26+msgstr "il y a {minutes} minute(s)"
2727
28−#: searx/webapp.py:254
28+#: searx/webapp.py:307
2929msgid "{hours} hour(s), {minutes} minute(s) ago"
30−msgstr "Il y a {hours} heure(s), {minutes} minute(s)"
30+msgstr "il y a {hours} heure(s), {minutes} minute(s)"
3131
32−#: searx/engines/__init__.py:164
32+#: searx/engines/__init__.py:177
3333msgid "Page loads (sec)"
3434msgstr "Chargement de la page (sec)"
3535
36−#: searx/engines/__init__.py:168
36+#: searx/engines/__init__.py:181
3737msgid "Number of results"
3838msgstr "Nombre de résultats"
3939
40−#: searx/engines/__init__.py:172
40+#: searx/engines/__init__.py:185
4141msgid "Scores"
4242msgstr "Score"
4343
44−#: searx/engines/__init__.py:176
44+#: searx/engines/__init__.py:189
4545msgid "Scores per result"
4646msgstr "Score par résultat"
4747
48−#: searx/engines/__init__.py:180
48+#: searx/engines/__init__.py:193
4949msgid "Errors"
5050msgstr "Erreurs"
5151
@@ -111,7 +111,7 @@ msgstr ""
111111#: searx/templates/courgette/preferences.html:66
112112#: searx/templates/default/preferences.html:66
113113msgid "Currently used search engines"
114−msgstr "Moteurs actuellement utilisés"
114+msgstr "Moteurs de recherche actuellement utilisés"
115115
116116#: searx/templates/courgette/preferences.html:70
117117#: searx/templates/default/preferences.html:70
@@ -173,30 +173,30 @@ msgstr "retour"
173173
174174#: searx/templates/courgette/results.html:12
175175#: searx/templates/default/results.html:12
176−#: searx/templates/oscar/results.html:74
176+#: searx/templates/oscar/results.html:70
177177msgid "Search URL"
178178msgstr "URL de recherche"
179179
180180#: searx/templates/courgette/results.html:16
181181#: searx/templates/default/results.html:16
182−#: searx/templates/oscar/results.html:79
182+#: searx/templates/oscar/results.html:75
183183msgid "Download results"
184184msgstr "Télécharger les résultats"
185185
186186#: searx/templates/courgette/results.html:34
187−#: searx/templates/default/results.html:34
188−#: searx/templates/oscar/results.html:51
187+#: searx/templates/default/results.html:42
188+#: searx/templates/oscar/results.html:50
189189msgid "Suggestions"
190190msgstr "Suggestions"
191191
192192#: searx/templates/courgette/results.html:62
193−#: searx/templates/default/results.html:62
193+#: searx/templates/default/results.html:78
194194#: searx/templates/oscar/results.html:29
195195msgid "previous page"
196196msgstr "page précédente"
197197
198198#: searx/templates/courgette/results.html:73
199−#: searx/templates/default/results.html:73
199+#: searx/templates/default/results.html:89
200200#: searx/templates/oscar/results.html:37
201201msgid "next page"
202202msgstr "page suivante"
@@ -212,6 +212,10 @@ msgstr "Rechercher..."
212212msgid "Engine stats"
213213msgstr "Statistiques du moteur"
214214
215+#: searx/templates/default/results.html:34
216+msgid "Answers"
217+msgstr ""
218+
215219#: searx/templates/oscar/base.html:61
216220msgid "Powered by"
217221msgstr ""
@@ -229,14 +233,12 @@ msgid "home"
229233msgstr ""
230234
231235#: searx/templates/oscar/preferences.html:11
232−#, fuzzy
233236msgid "General"
234−msgstr "général"
237+msgstr ""
235238
236239#: searx/templates/oscar/preferences.html:12
237−#, fuzzy
238240msgid "Engines"
239−msgstr "Statistiques du moteur"
241+msgstr ""
240242
241243#: searx/templates/oscar/preferences.html:36
242244msgid "What language do you prefer for search?"
@@ -262,11 +264,10 @@ msgid "Change searx layout"
262264msgstr ""
263265
264266#: searx/templates/oscar/results.html:6
265−#, fuzzy
266267msgid "Search results"
267−msgstr "Nombre de résultats"
268+msgstr ""
268269
269−#: searx/templates/oscar/results.html:68
270+#: searx/templates/oscar/results.html:65
270271msgid "Links"
271272msgstr ""
272273
@@ -341,9 +342,8 @@ msgid "Something went wrong."
341342msgstr ""
342343
343344#: searx/templates/oscar/result_templates/images.html:20
344−#, fuzzy
345345msgid "Get image"
346−msgstr "page suivante"
346+msgstr ""
347347
348348#: searx/templates/oscar/result_templates/images.html:21
349349msgid "View source"
@@ -380,3 +380,6 @@ msgstr "Informatique"
380380msgid "news"
381381msgstr "actus"
382382
383+msgid "map"
384+msgstr ""
385+
searx/translations/hu/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/hu/LC_MESSAGES/messages.po+37−31
@@ -1,47 +1,50 @@
1−# Hungarian translations for PROJECT.
1+# English translations for .
22# Copyright (C) 2014 ORGANIZATION
3−# This file is distributed under the same license as the PROJECT project.
4−# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
3+# This file is distributed under the same license as the project.
54#
5+# Translators:
6+# Adam Tauber <asciimoo@gmail.com>, 2014
7+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
68msgid ""
79msgstr ""
8−"Project-Id-Version: PROJECT VERSION\n"
10+"Project-Id-Version: searx\n"
911"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10−"POT-Creation-Date: 2014-10-01 19:45+0200\n"
11−"PO-Revision-Date: 2014-01-21 23:33+0100\n"
12−"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13−"Language-Team: hu <LL@li.org>\n"
14−"Plural-Forms: nplurals=1; plural=0\n"
12+"POT-Creation-Date: 2014-10-26 19:10+0100\n"
13+"PO-Revision-Date: 2014-09-07 21:30+0000\n"
14+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
15+"Language-Team: Hungarian "
16+"(http://www.transifex.com/projects/p/searx/language/hu/)\n"
17+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
1518"MIME-Version: 1.0\n"
1619"Content-Type: text/plain; charset=utf-8\n"
1720"Content-Transfer-Encoding: 8bit\n"
1821"Generated-By: Babel 1.3\n"
1922
20−#: searx/webapp.py:252
23+#: searx/webapp.py:305
2124msgid "{minutes} minute(s) ago"
2225msgstr "{minutes} perce"
2326
24−#: searx/webapp.py:254
27+#: searx/webapp.py:307
2528msgid "{hours} hour(s), {minutes} minute(s) ago"
2629msgstr "{hours} óra, {minutes} perce"
2730
28−#: searx/engines/__init__.py:164
31+#: searx/engines/__init__.py:177
2932msgid "Page loads (sec)"
3033msgstr "Válaszidők (sec)"
3134
32−#: searx/engines/__init__.py:168
35+#: searx/engines/__init__.py:181
3336msgid "Number of results"
3437msgstr "Találatok száma"
3538
36−#: searx/engines/__init__.py:172
39+#: searx/engines/__init__.py:185
3740msgid "Scores"
3841msgstr "Pontszámok"
3942
40−#: searx/engines/__init__.py:176
43+#: searx/engines/__init__.py:189
4144msgid "Scores per result"
4245msgstr "Pontszámok találatonként"
4346
44−#: searx/engines/__init__.py:180
47+#: searx/engines/__init__.py:193
4548msgid "Errors"
4649msgstr "Hibák"
4750
@@ -167,30 +170,30 @@ msgstr "vissza"
167170
168171#: searx/templates/courgette/results.html:12
169172#: searx/templates/default/results.html:12
170−#: searx/templates/oscar/results.html:74
173+#: searx/templates/oscar/results.html:70
171174msgid "Search URL"
172175msgstr "Keresési URL"
173176
174177#: searx/templates/courgette/results.html:16
175178#: searx/templates/default/results.html:16
176−#: searx/templates/oscar/results.html:79
179+#: searx/templates/oscar/results.html:75
177180msgid "Download results"
178181msgstr "Találatok letöltése"
179182
180183#: searx/templates/courgette/results.html:34
181−#: searx/templates/default/results.html:34
182−#: searx/templates/oscar/results.html:51
184+#: searx/templates/default/results.html:42
185+#: searx/templates/oscar/results.html:50
183186msgid "Suggestions"
184187msgstr "Javaslatok"
185188
186189#: searx/templates/courgette/results.html:62
187−#: searx/templates/default/results.html:62
190+#: searx/templates/default/results.html:78
188191#: searx/templates/oscar/results.html:29
189192msgid "previous page"
190193msgstr "előző oldal"
191194
192195#: searx/templates/courgette/results.html:73
193−#: searx/templates/default/results.html:73
196+#: searx/templates/default/results.html:89
194197#: searx/templates/oscar/results.html:37
195198msgid "next page"
196199msgstr "következő oldal"
@@ -206,6 +209,10 @@ msgstr "Keresés..."
206209msgid "Engine stats"
207210msgstr "Kereső statisztikák"
208211
212+#: searx/templates/default/results.html:34
213+msgid "Answers"
214+msgstr ""
215+
209216#: searx/templates/oscar/base.html:61
210217msgid "Powered by"
211218msgstr ""
@@ -223,14 +230,12 @@ msgid "home"
223230msgstr ""
224231
225232#: searx/templates/oscar/preferences.html:11
226−#, fuzzy
227233msgid "General"
228−msgstr "általános"
234+msgstr ""
229235
230236#: searx/templates/oscar/preferences.html:12
231−#, fuzzy
232237msgid "Engines"
233−msgstr "Kereső statisztikák"
238+msgstr ""
234239
235240#: searx/templates/oscar/preferences.html:36
236241msgid "What language do you prefer for search?"
@@ -256,11 +261,10 @@ msgid "Change searx layout"
256261msgstr ""
257262
258263#: searx/templates/oscar/results.html:6
259−#, fuzzy
260264msgid "Search results"
261−msgstr "Találatok száma"
265+msgstr ""
262266
263−#: searx/templates/oscar/results.html:68
267+#: searx/templates/oscar/results.html:65
264268msgid "Links"
265269msgstr ""
266270
@@ -335,9 +339,8 @@ msgid "Something went wrong."
335339msgstr ""
336340
337341#: searx/templates/oscar/result_templates/images.html:20
338−#, fuzzy
339342msgid "Get image"
340−msgstr "következő oldal"
343+msgstr ""
341344
342345#: searx/templates/oscar/result_templates/images.html:21
343346msgid "View source"
@@ -374,3 +377,6 @@ msgstr "it"
374377msgid "news"
375378msgstr "hírek"
376379
380+msgid "map"
381+msgstr "térkép"
382+
searx/translations/it/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/it/LC_MESSAGES/messages.po+30−27
@@ -8,8 +8,8 @@ msgid ""
88msgstr ""
99"Project-Id-Version: searx\n"
1010"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11−"POT-Creation-Date: 2014-10-01 19:45+0200\n"
12−"PO-Revision-Date: 2014-03-05 13:30+0000\n"
11+"POT-Creation-Date: 2014-10-26 19:10+0100\n"
12+"PO-Revision-Date: 2014-09-08 08:19+0000\n"
1313"Last-Translator: dp <d.pitrolo@gmx.com>\n"
1414"Language-Team: Italian "
1515"(http://www.transifex.com/projects/p/searx/language/it/)\n"
@@ -19,31 +19,31 @@ msgstr ""
1919"Content-Transfer-Encoding: 8bit\n"
2020"Generated-By: Babel 1.3\n"
2121
22−#: searx/webapp.py:252
22+#: searx/webapp.py:305
2323msgid "{minutes} minute(s) ago"
24−msgstr ""
24+msgstr "di {minutes} minuti fa"
2525
26−#: searx/webapp.py:254
26+#: searx/webapp.py:307
2727msgid "{hours} hour(s), {minutes} minute(s) ago"
28−msgstr ""
28+msgstr "di {ore} h e {minutes} minuti fa"
2929
30−#: searx/engines/__init__.py:164
30+#: searx/engines/__init__.py:177
3131msgid "Page loads (sec)"
3232msgstr " Caricamento della pagina (secondi)"
3333
34−#: searx/engines/__init__.py:168
34+#: searx/engines/__init__.py:181
3535msgid "Number of results"
3636msgstr "Risultati ottenuti"
3737
38−#: searx/engines/__init__.py:172
38+#: searx/engines/__init__.py:185
3939msgid "Scores"
4040msgstr "Punteggio"
4141
42−#: searx/engines/__init__.py:176
42+#: searx/engines/__init__.py:189
4343msgid "Scores per result"
4444msgstr "Punteggio per risultato"
4545
46−#: searx/engines/__init__.py:180
46+#: searx/engines/__init__.py:193
4747msgid "Errors"
4848msgstr "Errori"
4949
@@ -171,30 +171,30 @@ msgstr "indietro"
171171
172172#: searx/templates/courgette/results.html:12
173173#: searx/templates/default/results.html:12
174−#: searx/templates/oscar/results.html:74
174+#: searx/templates/oscar/results.html:70
175175msgid "Search URL"
176176msgstr "URL della ricerca"
177177
178178#: searx/templates/courgette/results.html:16
179179#: searx/templates/default/results.html:16
180−#: searx/templates/oscar/results.html:79
180+#: searx/templates/oscar/results.html:75
181181msgid "Download results"
182182msgstr "Scarica i risultati"
183183
184184#: searx/templates/courgette/results.html:34
185−#: searx/templates/default/results.html:34
186−#: searx/templates/oscar/results.html:51
185+#: searx/templates/default/results.html:42
186+#: searx/templates/oscar/results.html:50
187187msgid "Suggestions"
188188msgstr "Suggerimenti"
189189
190190#: searx/templates/courgette/results.html:62
191−#: searx/templates/default/results.html:62
191+#: searx/templates/default/results.html:78
192192#: searx/templates/oscar/results.html:29
193193msgid "previous page"
194194msgstr "pagina precedente"
195195
196196#: searx/templates/courgette/results.html:73
197−#: searx/templates/default/results.html:73
197+#: searx/templates/default/results.html:89
198198#: searx/templates/oscar/results.html:37
199199msgid "next page"
200200msgstr "pagina successiva"
@@ -203,13 +203,17 @@ msgstr "pagina successiva"
203203#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
204204#: searx/templates/oscar/search_full.html:5
205205msgid "Search for..."
206−msgstr ""
206+msgstr "Cerca…"
207207
208208#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4
209209#: searx/templates/oscar/stats.html:5
210210msgid "Engine stats"
211211msgstr "Statistiche dei motori"
212212
213+#: searx/templates/default/results.html:34
214+msgid "Answers"
215+msgstr ""
216+
213217#: searx/templates/oscar/base.html:61
214218msgid "Powered by"
215219msgstr ""
@@ -227,14 +231,12 @@ msgid "home"
227231msgstr ""
228232
229233#: searx/templates/oscar/preferences.html:11
230−#, fuzzy
231234msgid "General"
232−msgstr "generale"
235+msgstr ""
233236
234237#: searx/templates/oscar/preferences.html:12
235−#, fuzzy
236238msgid "Engines"
237−msgstr "Statistiche dei motori"
239+msgstr ""
238240
239241#: searx/templates/oscar/preferences.html:36
240242msgid "What language do you prefer for search?"
@@ -260,11 +262,10 @@ msgid "Change searx layout"
260262msgstr ""
261263
262264#: searx/templates/oscar/results.html:6
263−#, fuzzy
264265msgid "Search results"
265−msgstr "Risultati ottenuti"
266+msgstr ""
266267
267−#: searx/templates/oscar/results.html:68
268+#: searx/templates/oscar/results.html:65
268269msgid "Links"
269270msgstr ""
270271
@@ -339,9 +340,8 @@ msgid "Something went wrong."
339340msgstr ""
340341
341342#: searx/templates/oscar/result_templates/images.html:20
342−#, fuzzy
343343msgid "Get image"
344−msgstr "pagina successiva"
344+msgstr ""
345345
346346#: searx/templates/oscar/result_templates/images.html:21
347347msgid "View source"
@@ -378,3 +378,6 @@ msgstr "it"
378378msgid "news"
379379msgstr "notizie"
380380
381+msgid "map"
382+msgstr "mappe"
383+
searx/translations/ja/LC_MESSAGES/messages.monew file

Binary file not shown.

searx/translations/ja/LC_MESSAGES/messages.ponew file+377
@@ -0,0 +1,377 @@
1+# Japanese translations for PROJECT.
2+# Copyright (C) 2014 ORGANIZATION
3+# This file is distributed under the same license as the PROJECT project.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: PROJECT VERSION\n"
9+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10+"POT-Creation-Date: 2014-10-26 19:10+0100\n"
11+"PO-Revision-Date: 2014-10-05 16:38+0200\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13+"Language-Team: ja <LL@li.org>\n"
14+"Plural-Forms: nplurals=1; plural=0\n"
15+"MIME-Version: 1.0\n"
16+"Content-Type: text/plain; charset=utf-8\n"
17+"Content-Transfer-Encoding: 8bit\n"
18+"Generated-By: Babel 1.3\n"
19+
20+#: searx/webapp.py:305
21+msgid "{minutes} minute(s) ago"
22+msgstr ""
23+
24+#: searx/webapp.py:307
25+msgid "{hours} hour(s), {minutes} minute(s) ago"
26+msgstr ""
27+
28+#: searx/engines/__init__.py:177
29+msgid "Page loads (sec)"
30+msgstr ""
31+
32+#: searx/engines/__init__.py:181
33+msgid "Number of results"
34+msgstr ""
35+
36+#: searx/engines/__init__.py:185
37+msgid "Scores"
38+msgstr ""
39+
40+#: searx/engines/__init__.py:189
41+msgid "Scores per result"
42+msgstr ""
43+
44+#: searx/engines/__init__.py:193
45+msgid "Errors"
46+msgstr ""
47+
48+#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:8
49+#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
50+msgid "about"
51+msgstr "に関する"
52+
53+#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:9
54+#: searx/templates/oscar/navbar.html:17
55+#: searx/templates/oscar/preferences.html:2
56+msgid "preferences"
57+msgstr "設定"
58+
59+#: searx/templates/courgette/preferences.html:5
60+#: searx/templates/default/preferences.html:5
61+#: searx/templates/oscar/preferences.html:6
62+msgid "Preferences"
63+msgstr "設定"
64+
65+#: searx/templates/courgette/preferences.html:9
66+#: searx/templates/default/preferences.html:9
67+#: searx/templates/oscar/preferences.html:21
68+msgid "Default categories"
69+msgstr ""
70+
71+#: searx/templates/courgette/preferences.html:15
72+#: searx/templates/default/preferences.html:15
73+#: searx/templates/oscar/preferences.html:27
74+msgid "Search language"
75+msgstr ""
76+
77+#: searx/templates/courgette/preferences.html:18
78+#: searx/templates/default/preferences.html:18
79+#: searx/templates/oscar/preferences.html:30
80+msgid "Automatic"
81+msgstr ""
82+
83+#: searx/templates/courgette/preferences.html:26
84+#: searx/templates/default/preferences.html:26
85+#: searx/templates/oscar/preferences.html:39
86+msgid "Interface language"
87+msgstr ""
88+
89+#: searx/templates/courgette/preferences.html:36
90+#: searx/templates/default/preferences.html:36
91+#: searx/templates/oscar/preferences.html:50
92+msgid "Autocomplete"
93+msgstr ""
94+
95+#: searx/templates/courgette/preferences.html:47
96+#: searx/templates/default/preferences.html:47
97+#: searx/templates/oscar/preferences.html:63
98+msgid "Method"
99+msgstr ""
100+
101+#: searx/templates/courgette/preferences.html:56
102+#: searx/templates/default/preferences.html:56
103+#: searx/templates/oscar/preferences.html:73
104+msgid "Themes"
105+msgstr ""
106+
107+#: searx/templates/courgette/preferences.html:66
108+#: searx/templates/default/preferences.html:66
109+msgid "Currently used search engines"
110+msgstr ""
111+
112+#: searx/templates/courgette/preferences.html:70
113+#: searx/templates/default/preferences.html:70
114+msgid "Engine name"
115+msgstr ""
116+
117+#: searx/templates/courgette/preferences.html:71
118+#: searx/templates/default/preferences.html:71
119+msgid "Category"
120+msgstr ""
121+
122+#: searx/templates/courgette/preferences.html:72
123+#: searx/templates/courgette/preferences.html:83
124+#: searx/templates/default/preferences.html:72
125+#: searx/templates/default/preferences.html:83
126+#: searx/templates/oscar/preferences.html:110
127+msgid "Allow"
128+msgstr ""
129+
130+#: searx/templates/courgette/preferences.html:72
131+#: searx/templates/courgette/preferences.html:84
132+#: searx/templates/default/preferences.html:72
133+#: searx/templates/default/preferences.html:84
134+#: searx/templates/oscar/preferences.html:109
135+msgid "Block"
136+msgstr ""
137+
138+#: searx/templates/courgette/preferences.html:92
139+#: searx/templates/default/preferences.html:92
140+#: searx/templates/oscar/preferences.html:124
141+msgid ""
142+"These settings are stored in your cookies, this allows us not to store "
143+"this data about you."
144+msgstr ""
145+
146+#: searx/templates/courgette/preferences.html:94
147+#: searx/templates/default/preferences.html:94
148+#: searx/templates/oscar/preferences.html:126
149+msgid ""
150+"These cookies serve your sole convenience, we don't use these cookies to "
151+"track you."
152+msgstr ""
153+
154+#: searx/templates/courgette/preferences.html:97
155+#: searx/templates/default/preferences.html:97
156+#: searx/templates/oscar/preferences.html:129
157+msgid "save"
158+msgstr ""
159+
160+#: searx/templates/courgette/preferences.html:98
161+#: searx/templates/default/preferences.html:98
162+#: searx/templates/oscar/preferences.html:130
163+msgid "back"
164+msgstr ""
165+
166+#: searx/templates/courgette/results.html:12
167+#: searx/templates/default/results.html:12
168+#: searx/templates/oscar/results.html:70
169+msgid "Search URL"
170+msgstr ""
171+
172+#: searx/templates/courgette/results.html:16
173+#: searx/templates/default/results.html:16
174+#: searx/templates/oscar/results.html:75
175+msgid "Download results"
176+msgstr ""
177+
178+#: searx/templates/courgette/results.html:34
179+#: searx/templates/default/results.html:42
180+#: searx/templates/oscar/results.html:50
181+msgid "Suggestions"
182+msgstr "提案"
183+
184+#: searx/templates/courgette/results.html:62
185+#: searx/templates/default/results.html:78
186+#: searx/templates/oscar/results.html:29
187+msgid "previous page"
188+msgstr "前のページ"
189+
190+#: searx/templates/courgette/results.html:73
191+#: searx/templates/default/results.html:89
192+#: searx/templates/oscar/results.html:37
193+msgid "next page"
194+msgstr "次のページ"
195+
196+#: searx/templates/courgette/search.html:3
197+#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
198+#: searx/templates/oscar/search_full.html:5
199+msgid "Search for..."
200+msgstr "検索する..."
201+
202+#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4
203+#: searx/templates/oscar/stats.html:5
204+msgid "Engine stats"
205+msgstr ""
206+
207+#: searx/templates/default/results.html:34
208+msgid "Answers"
209+msgstr ""
210+
211+#: searx/templates/oscar/base.html:61
212+msgid "Powered by"
213+msgstr ""
214+
215+#: searx/templates/oscar/base.html:61
216+msgid "a privacy-respecting, hackable metasearch engine"
217+msgstr ""
218+
219+#: searx/templates/oscar/navbar.html:6
220+msgid "Toggle navigation"
221+msgstr ""
222+
223+#: searx/templates/oscar/navbar.html:15
224+msgid "home"
225+msgstr ""
226+
227+#: searx/templates/oscar/preferences.html:11
228+msgid "General"
229+msgstr ""
230+
231+#: searx/templates/oscar/preferences.html:12
232+msgid "Engines"
233+msgstr ""
234+
235+#: searx/templates/oscar/preferences.html:36
236+msgid "What language do you prefer for search?"
237+msgstr ""
238+
239+#: searx/templates/oscar/preferences.html:47
240+msgid "Change the language of the layout"
241+msgstr ""
242+
243+#: searx/templates/oscar/preferences.html:60
244+msgid "Find stuff as you type"
245+msgstr ""
246+
247+#: searx/templates/oscar/preferences.html:70
248+msgid ""
249+"Change how forms are submited, <a "
250+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
251+" rel=\"external\">learn more about request methods</a>"
252+msgstr ""
253+
254+#: searx/templates/oscar/preferences.html:81
255+msgid "Change searx layout"
256+msgstr ""
257+
258+#: searx/templates/oscar/results.html:6
259+msgid "Search results"
260+msgstr ""
261+
262+#: searx/templates/oscar/results.html:65
263+msgid "Links"
264+msgstr ""
265+
266+#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
267+msgid "Start search"
268+msgstr ""
269+
270+#: searx/templates/oscar/search_full.html:11
271+msgid "Show search filters"
272+msgstr ""
273+
274+#: searx/templates/oscar/search_full.html:11
275+msgid "Hide search filters"
276+msgstr ""
277+
278+#: searx/templates/oscar/stats.html:2
279+msgid "stats"
280+msgstr ""
281+
282+#: searx/templates/oscar/messages/first_time.html:4
283+#: searx/templates/oscar/messages/no_results.html:5
284+#: searx/templates/oscar/messages/save_settings_successfull.html:5
285+#: searx/templates/oscar/messages/unknow_error.html:5
286+msgid "Close"
287+msgstr ""
288+
289+#: searx/templates/oscar/messages/first_time.html:6
290+#: searx/templates/oscar/messages/no_data_available.html:3
291+msgid "Heads up!"
292+msgstr ""
293+
294+#: searx/templates/oscar/messages/first_time.html:7
295+msgid "It look like you are using searx first time."
296+msgstr ""
297+
298+#: searx/templates/oscar/messages/js_disabled.html:2
299+msgid "Warning!"
300+msgstr ""
301+
302+#: searx/templates/oscar/messages/js_disabled.html:3
303+msgid "Please enable JavaScript to use full functionality of this site."
304+msgstr ""
305+
306+#: searx/templates/oscar/messages/no_data_available.html:4
307+msgid "There is currently no data available. "
308+msgstr ""
309+
310+#: searx/templates/oscar/messages/no_results.html:7
311+msgid "Sorry!"
312+msgstr ""
313+
314+#: searx/templates/oscar/messages/no_results.html:8
315+msgid ""
316+"we didn't find any results. Please use another query or search in more "
317+"categories."
318+msgstr ""
319+
320+#: searx/templates/oscar/messages/save_settings_successfull.html:7
321+msgid "Well done!"
322+msgstr ""
323+
324+#: searx/templates/oscar/messages/save_settings_successfull.html:8
325+msgid "Settings saved successfully."
326+msgstr ""
327+
328+#: searx/templates/oscar/messages/unknow_error.html:7
329+msgid "Oh snap!"
330+msgstr ""
331+
332+#: searx/templates/oscar/messages/unknow_error.html:8
333+msgid "Something went wrong."
334+msgstr ""
335+
336+#: searx/templates/oscar/result_templates/images.html:20
337+msgid "Get image"
338+msgstr ""
339+
340+#: searx/templates/oscar/result_templates/images.html:21
341+msgid "View source"
342+msgstr ""
343+
344+#: searx/templates/oscar/result_templates/torrent.html:7
345+msgid "Seeder"
346+msgstr ""
347+
348+#: searx/templates/oscar/result_templates/torrent.html:7
349+msgid "Leecher"
350+msgstr ""
351+
352+# categories - manually added
353+# TODO - automatically add
354+msgid "files"
355+msgstr "ファイル"
356+
357+msgid "map"
358+msgstr "地図"
359+
360+msgid "music"
361+msgstr "音楽"
362+
363+msgid "social media"
364+msgstr "ソーシャルメディア"
365+
366+msgid "images"
367+msgstr "画像"
368+
369+msgid "videos"
370+msgstr "動画"
371+
372+msgid "it"
373+msgstr "情報技術"
374+
375+msgid "news"
376+msgstr "ニュース"
377+
searx/translations/nl/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/nl/LC_MESSAGES/messages.po+29−26
@@ -8,8 +8,8 @@ msgid ""
88msgstr ""
99"Project-Id-Version: searx\n"
1010"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11−"POT-Creation-Date: 2014-10-01 19:45+0200\n"
12−"PO-Revision-Date: 2014-03-15 20:20+0000\n"
11+"POT-Creation-Date: 2014-10-26 19:10+0100\n"
12+"PO-Revision-Date: 2014-09-09 15:33+0000\n"
1313"Last-Translator: André Koot <meneer@tken.net>\n"
1414"Language-Team: Dutch "
1515"(http://www.transifex.com/projects/p/searx/language/nl/)\n"
@@ -19,31 +19,31 @@ msgstr ""
1919"Content-Transfer-Encoding: 8bit\n"
2020"Generated-By: Babel 1.3\n"
2121
22−#: searx/webapp.py:252
22+#: searx/webapp.py:305
2323msgid "{minutes} minute(s) ago"
24−msgstr ""
24+msgstr "{minutes} min geleden"
2525
26−#: searx/webapp.py:254
26+#: searx/webapp.py:307
2727msgid "{hours} hour(s), {minutes} minute(s) ago"
28−msgstr ""
28+msgstr "{hours} uur, {minutes} min geleden"
2929
30−#: searx/engines/__init__.py:164
30+#: searx/engines/__init__.py:177
3131msgid "Page loads (sec)"
3232msgstr "Pagina laadt (sec)"
3333
34−#: searx/engines/__init__.py:168
34+#: searx/engines/__init__.py:181
3535msgid "Number of results"
3636msgstr "Aantal zoekresultaten"
3737
38−#: searx/engines/__init__.py:172
38+#: searx/engines/__init__.py:185
3939msgid "Scores"
4040msgstr "Scores"
4141
42−#: searx/engines/__init__.py:176
42+#: searx/engines/__init__.py:189
4343msgid "Scores per result"
4444msgstr "Scores per zoekresultaat"
4545
46−#: searx/engines/__init__.py:180
46+#: searx/engines/__init__.py:193
4747msgid "Errors"
4848msgstr "Fouten"
4949
@@ -171,30 +171,30 @@ msgstr "terug"
171171
172172#: searx/templates/courgette/results.html:12
173173#: searx/templates/default/results.html:12
174−#: searx/templates/oscar/results.html:74
174+#: searx/templates/oscar/results.html:70
175175msgid "Search URL"
176176msgstr "Zoek URL"
177177
178178#: searx/templates/courgette/results.html:16
179179#: searx/templates/default/results.html:16
180−#: searx/templates/oscar/results.html:79
180+#: searx/templates/oscar/results.html:75
181181msgid "Download results"
182182msgstr "Downloaden zoekresultaten"
183183
184184#: searx/templates/courgette/results.html:34
185−#: searx/templates/default/results.html:34
186−#: searx/templates/oscar/results.html:51
185+#: searx/templates/default/results.html:42
186+#: searx/templates/oscar/results.html:50
187187msgid "Suggestions"
188188msgstr "Suggesties"
189189
190190#: searx/templates/courgette/results.html:62
191−#: searx/templates/default/results.html:62
191+#: searx/templates/default/results.html:78
192192#: searx/templates/oscar/results.html:29
193193msgid "previous page"
194194msgstr "vorige pagina"
195195
196196#: searx/templates/courgette/results.html:73
197−#: searx/templates/default/results.html:73
197+#: searx/templates/default/results.html:89
198198#: searx/templates/oscar/results.html:37
199199msgid "next page"
200200msgstr "volgende pagina"
@@ -210,6 +210,10 @@ msgstr "Zoeken naar..."
210210msgid "Engine stats"
211211msgstr "Zoekmachinestatistieken"
212212
213+#: searx/templates/default/results.html:34
214+msgid "Answers"
215+msgstr ""
216+
213217#: searx/templates/oscar/base.html:61
214218msgid "Powered by"
215219msgstr ""
@@ -227,14 +231,12 @@ msgid "home"
227231msgstr ""
228232
229233#: searx/templates/oscar/preferences.html:11
230−#, fuzzy
231234msgid "General"
232−msgstr "algemeen"
235+msgstr ""
233236
234237#: searx/templates/oscar/preferences.html:12
235−#, fuzzy
236238msgid "Engines"
237−msgstr "Zoekmachinestatistieken"
239+msgstr ""
238240
239241#: searx/templates/oscar/preferences.html:36
240242msgid "What language do you prefer for search?"
@@ -260,11 +262,10 @@ msgid "Change searx layout"
260262msgstr ""
261263
262264#: searx/templates/oscar/results.html:6
263−#, fuzzy
264265msgid "Search results"
265−msgstr "Aantal zoekresultaten"
266+msgstr ""
266267
267−#: searx/templates/oscar/results.html:68
268+#: searx/templates/oscar/results.html:65
268269msgid "Links"
269270msgstr ""
270271
@@ -339,9 +340,8 @@ msgid "Something went wrong."
339340msgstr ""
340341
341342#: searx/templates/oscar/result_templates/images.html:20
342−#, fuzzy
343343msgid "Get image"
344−msgstr "volgende pagina"
344+msgstr ""
345345
346346#: searx/templates/oscar/result_templates/images.html:21
347347msgid "View source"
@@ -378,3 +378,6 @@ msgstr "it"
378378msgid "news"
379379msgstr "nieuws"
380380
381+msgid "map"
382+msgstr "kaart"
383+
searx/utils.py+7−3
@@ -1,4 +1,4 @@
1−#import htmlentitydefs
1+# import htmlentitydefs
22from codecs import getincrementalencoder
33from HTMLParser import HTMLParser
44from random import choice
@@ -20,6 +20,10 @@ def gen_useragent():
2020 return ua.format(os=choice(ua_os), version=choice(ua_versions))
2121
2222
23+def searx_useragent():
24+ return 'searx'
25+
26+
2327def highlight_content(content, query):
2428
2529 if not content:
@@ -64,8 +68,8 @@ class HTMLTextExtractor(HTMLParser):
6468 self.result.append(unichr(codepoint))
6569
6670 def handle_entityref(self, name):
67− #codepoint = htmlentitydefs.name2codepoint[name]
68− #self.result.append(unichr(codepoint))
71+ # codepoint = htmlentitydefs.name2codepoint[name]
72+ # self.result.append(unichr(codepoint))
6973 self.result.append(name)
7074
7175 def get_text(self):
searx/webapp.py+64−12
@@ -50,13 +50,16 @@ from searx.search import Search
5050from searx.query import Query
5151from searx.autocomplete import backends as autocomplete_backends
5252
53+from urlparse import urlparse
54+import re
55+
5356
5457static_path, templates_path, themes =\
5558 get_themes(settings['themes_path']
5659 if settings.get('themes_path')
5760 else searx_dir)
58−default_theme = settings['default_theme'] if \
59− settings.get('default_theme', None) else 'default'
61+
62+default_theme = settings['server'].get('default_theme', 'default')
6063
6164app = Flask(
6265 __name__,
@@ -143,14 +146,14 @@ def render(template_name, override_theme=None, **kwargs):
143146
144147 nonblocked_categories = set(chain.from_iterable(nonblocked_categories))
145148
146− if not 'categories' in kwargs:
149+ if 'categories' not in kwargs:
147150 kwargs['categories'] = ['general']
148151 kwargs['categories'].extend(x for x in
149152 sorted(categories.keys())
150153 if x != 'general'
151154 and x in nonblocked_categories)
152155
153− if not 'selected_categories' in kwargs:
156+ if 'selected_categories' not in kwargs:
154157 kwargs['selected_categories'] = []
155158 for arg in request.args:
156159 if arg.startswith('category_'):
@@ -165,7 +168,7 @@ def render(template_name, override_theme=None, **kwargs):
165168 if not kwargs['selected_categories']:
166169 kwargs['selected_categories'] = ['general']
167170
168− if not 'autocomplete' in kwargs:
171+ if 'autocomplete' not in kwargs:
169172 kwargs['autocomplete'] = autocomplete
170173
171174 kwargs['method'] = request.cookies.get('method', 'POST')
@@ -201,23 +204,72 @@ def index():
201204 'index.html',
202205 )
203206
204− search.results, search.suggestions, search.answers, search.infoboxes = search.search(request)
207+ search.results, search.suggestions,\
208+ search.answers, search.infoboxes = search.search(request)
205209
206210 for result in search.results:
207211
208212 if not search.paging and engines[result['engine']].paging:
209213 search.paging = True
210214
215+ # check if HTTPS rewrite is required
211216 if settings['server']['https_rewrite']\
212217 and result['parsed_url'].scheme == 'http':
213218
214− for http_regex, https_url in https_rules:
215− if http_regex.match(result['url']):
216− result['url'] = http_regex.sub(https_url, result['url'])
217− # TODO result['parsed_url'].scheme
219+ skip_https_rewrite = False
220+
221+ # check if HTTPS rewrite is possible
222+ for target, rules, exclusions in https_rules:
223+
224+ # check if target regex match with url
225+ if target.match(result['url']):
226+ # process exclusions
227+ for exclusion in exclusions:
228+ # check if exclusion match with url
229+ if exclusion.match(result['url']):
230+ skip_https_rewrite = True
231+ break
232+
233+ # skip https rewrite if required
234+ if skip_https_rewrite:
235+ break
236+
237+ # process rules
238+ for rule in rules:
239+ try:
240+ # TODO, precompile rule
241+ p = re.compile(rule[0])
242+
243+ # rewrite url if possible
244+ new_result_url = p.sub(rule[1], result['url'])
245+ except:
246+ break
247+
248+ # parse new url
249+ new_parsed_url = urlparse(new_result_url)
250+
251+ # continiue if nothing was rewritten
252+ if result['url'] == new_result_url:
253+ continue
254+
255+ # get domainname from result
256+ # TODO, does only work correct with TLD's like
257+ # asdf.com, not for asdf.com.de
258+ # TODO, using publicsuffix instead of this rewrite rule
259+ old_result_domainname = '.'.join(
260+ result['parsed_url'].hostname.split('.')[-2:])
261+ new_result_domainname = '.'.join(
262+ new_parsed_url.hostname.split('.')[-2:])
263+
264+ # check if rewritten hostname is the same,
265+ # to protect against wrong or malicious rewrite rules
266+ if old_result_domainname == new_result_domainname:
267+ # set new url
268+ result['url'] = new_result_url
269+
270+ # target has matched, do not search over the other rules
218271 break
219272
220− # HTTPS rewrite
221273 if search.request_data.get('format', 'html') == 'html':
222274 if 'content' in result:
223275 result['content'] = highlight_content(result['content'],
@@ -384,7 +436,7 @@ def preferences():
384436 for pd_name, pd in request.form.items():
385437 if pd_name.startswith('category_'):
386438 category = pd_name[9:]
387− if not category in categories:
439+ if category not in categories:
388440 continue
389441 selected_categories.append(category)
390442 elif pd_name == 'locale' and pd in settings['locales']:
setup.py+2−1
@@ -15,7 +15,7 @@ long_description = read('README.rst')
1515
1616setup(
1717 name='searx',
18− version="0.3.1",
18+ version="0.4.0",
1919 description="A privacy-respecting, hackable metasearch engine",
2020 long_description=long_description,
2121 classifiers=[
@@ -70,6 +70,7 @@ setup(
7070 'translations/*/*/*',
7171 'templates/*/*.xml',
7272 'templates/*/*.html',
73+ 'https_rules/*.xml',
7374 'templates/*/result_templates/*.html',
7475 ],
7576 },