on master help sign in
Merge pull request #97 from pointhi/https

Implementing https rewrite support

commit20400c40c34b6122621476c46460c5a3a8624c89 authorAdam Tauber <asciimoo@gmail.com> dateSun 19 Oct 2014, 12:06 (12 years ago) parent840945f1e3e646
40 files changed+4691−13
searx/__init__.py+10 searx/https_rewrite.py+135−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/settings_robot.yml+3 searx/webapp.py+52−5
searx/__init__.py+10
@@ -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:
@@ -34,7 +35,16 @@ if 'SEARX_SETTINGS_PATH' in environ:
3435else:
3536 settings_path = join(searx_dir, 'settings.yml')
3637
38+if 'SEARX_HTTPS_REWRITE_PATH' in environ:
39+ https_rewrite_path = environ['SEARX_HTTPS_REWRITE_PATH']
40+else:
41+ https_rewrite_path = join(searx_dir, 'https_rules')
3742
3843# load settings
3944with open(settings_path) as settings_yaml:
4045 settings = load(settings_yaml)
46+
47+# load https rules only if https rewrite is enabled
48+if settings.get('server', {}).get('https_rewrite'):
49+ # loade https rules
50+ load_https_rules(https_rewrite_path)
searx/https_rewrite.py+135−8
@@ -1,14 +1,141 @@
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, 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+ #print(etree.tostring(tree))
49+
50+ # check if root is a node with the name ruleset
51+ # TODO improve parsing
52+ if root.tag != 'ruleset':
53+ return ()
54+
55+ # check if rule is deactivated by default
56+ if root.attrib.get('default_off'):
57+ return ()
58+
59+ # check if rule does only work for specific platforms
60+ if root.attrib.get('platform'):
61+ return ()
62+
63+ hosts = []
64+ rules = []
65+ exclusions = []
66+
67+ # parse childs from ruleset
68+ for ruleset in root:
69+ # this child define a target
70+ if ruleset.tag == 'target':
71+ # check if required tags available
72+ if not ruleset.attrib.get('host'):
73+ continue
74+
75+ # convert host-rule to valid regex
76+ host = ruleset.attrib.get('host').replace('.', '\.').replace('*', '.*')
77+
78+ # append to host list
79+ hosts.append(host)
80+
81+ # this child define a rule
82+ elif ruleset.tag == 'rule':
83+ # check if required tags available
84+ if not ruleset.attrib.get('from')\
85+ or not ruleset.attrib.get('to'):
86+ continue
87+
88+ # TODO hack, which convert a javascript regex group 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, currently doing that in webapp.py
93+ #rule_from_rgx = re.compile(rule_from, re.I)
94+
95+ # append rule
96+ rules.append((rule_from, rule_to))
97+
98+ # this child define an exclusion
99+ elif ruleset.tag == 'exclusion':
100+ # check if required tags available
101+ if not ruleset.attrib.get('pattern'):
102+ continue
103+
104+ exclusion_rgx = re.compile(ruleset.attrib.get('pattern'))
105+
106+ # append exclusion
107+ exclusions.append(exclusion_rgx)
108+
109+ # convert list of possible hosts to a simple regex
110+ # TODO compress regex to improve performance
111+ try:
112+ target_hosts = re.compile('^(' + '|'.join(hosts) + ')', re.I | re.U)
113+ except:
114+ return ()
115+
116+ # return ruleset
117+ return (target_hosts, rules, exclusions)
118+
119+
120+# load all https rewrite rules
121+def load_https_rules(rules_path):
122+ # add / to path if not set yet
123+ if rules_path[-1:] != '/':
124+ rules_path += '/'
125+
126+ # search all xml files which are stored in the https rule directory
127+ xml_files = [ join(rules_path,f) for f in listdir(rules_path) if isfile(join(rules_path,f)) and f[-4:] == '.xml' ]
128+
129+ # load xml-files
130+ for ruleset_file in xml_files:
131+ # calculate rewrite-rules
132+ ruleset = load_single_https_ruleset(ruleset_file)
133+
134+ # skip if no ruleset returned
135+ if not ruleset:
136+ continue
137+
138+ # append ruleset
139+ https_rules.append(ruleset)
140+
141+ 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/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/webapp.py+52−5
@@ -50,6 +50,9 @@ 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']
@@ -206,16 +209,60 @@ def index():
206209 if not search.paging and engines[result['engine']].paging:
207210 search.paging = True
208211
212+ # check if HTTPS rewrite is required
209213 if settings['server']['https_rewrite']\
210214 and result['parsed_url'].scheme == 'http':
211215
212− for http_regex, https_url in https_rules:
213− if http_regex.match(result['url']):
214− result['url'] = http_regex.sub(https_url, result['url'])
215− # TODO result['parsed_url'].scheme
216+ skip_https_rewrite = False
217+
218+ # check if HTTPS rewrite is possible
219+ for target, rules, exclusions in https_rules:
220+
221+ # check if target regex match with url
222+ if target.match(result['url']):
223+ # process exclusions
224+ for exclusion in exclusions:
225+ # check if exclusion match with url
226+ if exclusion.match(result['url']):
227+ skip_https_rewrite = True
228+ break
229+
230+ # skip https rewrite if required
231+ if skip_https_rewrite:
232+ break
233+
234+ # process rules
235+ for rule in rules:
236+ try:
237+ # TODO, precompile rule
238+ p = re.compile(rule[0])
239+
240+ # rewrite url if possible
241+ new_result_url = p.sub(rule[1], result['url'])
242+ except:
243+ break
244+
245+ # parse new url
246+ new_parsed_url = urlparse(new_result_url)
247+
248+ # continiue if nothing was rewritten
249+ if result['url'] == new_result_url:
250+ continue
251+
252+ # get domainname from result
253+ # TODO, does only work correct with TLD's like asdf.com, not for asdf.com.de
254+ # TODO, using publicsuffix instead of this rewrite rule
255+ old_result_domainname = '.'.join(result['parsed_url'].hostname.split('.')[-2:])
256+ new_result_domainname = '.'.join(new_parsed_url.hostname.split('.')[-2:])
257+
258+ # check if rewritten hostname is the same, to protect against wrong or malicious rewrite rules
259+ if old_result_domainname == new_result_domainname:
260+ # set new url
261+ result['url'] = new_result_url
262+
263+ # target has matched, do not search over the other rules
216264 break
217265
218− # HTTPS rewrite
219266 if search.request_data.get('format', 'html') == 'html':
220267 if 'content' in result:
221268 result['content'] = highlight_content(result['content'],