コミットを比較
14 コミット
ccf4748573
...
e068d68723
作成者 | SHA1 | 日付 |
---|---|---|
守矢諏訪子 | e068d68723 | |
Ben Busby | 18fc14dc5b | |
dependabot[bot] | 8a3c9ea397 | |
dependabot[bot] | ee25d3a23d | |
PrivacyDevel | c705bc7391 | |
cgi-bin/ | 2ac9e37696 | |
Simon Rusinov | 6f9d11a6ed | |
Ben Busby | 63a2ea56ed | |
Ben Busby | 4962659acb | |
Cx | 8a2a6f3265 | |
PrivacyDevel | 1b4e4e144e | |
Andiru | 29992985bc | |
Ben Busby | 179fc5e020 | |
Ben Busby | 421a8ac054 |
|
@ -15,10 +15,17 @@ RUN pip install --prefix /install --no-warn-script-location --no-cache-dir -r re
|
||||||
FROM python:3.11.0a5-alpine
|
FROM python:3.11.0a5-alpine
|
||||||
|
|
||||||
RUN apk add --update --no-cache tor curl openrc libstdc++
|
RUN apk add --update --no-cache tor curl openrc libstdc++
|
||||||
|
# git go //for obfs4proxy
|
||||||
# libcurl4-openssl-dev
|
# libcurl4-openssl-dev
|
||||||
|
|
||||||
RUN apk -U upgrade
|
RUN apk -U upgrade
|
||||||
|
|
||||||
|
# uncomment to build obfs4proxy
|
||||||
|
# RUN git clone https://gitlab.com/yawning/obfs4.git
|
||||||
|
# WORKDIR /obfs4
|
||||||
|
# RUN go build -o obfs4proxy/obfs4proxy ./obfs4proxy
|
||||||
|
# RUN cp ./obfs4proxy/obfs4proxy /usr/bin/obfs4proxy
|
||||||
|
|
||||||
ARG DOCKER_USER=whoogle
|
ARG DOCKER_USER=whoogle
|
||||||
ARG DOCKER_USERID=927
|
ARG DOCKER_USERID=927
|
||||||
ARG config_dir=/config
|
ARG config_dir=/config
|
||||||
|
|
10
README.md
10
README.md
|
@ -654,7 +654,7 @@ A lot of the app currently piggybacks on Google's existing support for fetching
|
||||||
| [https://search.sethforprivacy.com](https://search.sethforprivacy.com) | 🇩🇪 DE | English | |
|
| [https://search.sethforprivacy.com](https://search.sethforprivacy.com) | 🇩🇪 DE | English | |
|
||||||
| [https://whoogle.dcs0.hu](https://whoogle.dcs0.hu) | 🇭🇺 HU | Multi-choice | |
|
| [https://whoogle.dcs0.hu](https://whoogle.dcs0.hu) | 🇭🇺 HU | Multi-choice | |
|
||||||
| [https://gowogle.voring.me](https://gowogle.voring.me) | 🇺🇸 US | Multi-choice | |
|
| [https://gowogle.voring.me](https://gowogle.voring.me) | 🇺🇸 US | Multi-choice | |
|
||||||
| [https://whoogle.privacydev.net](https://whoogle.privacydev.net) | 🇳🇱 NL | English | |
|
| [https://whoogle.privacydev.net](https://whoogle.privacydev.net) | 🇫🇷 FR | English | |
|
||||||
| [https://wg.vern.cc](https://wg.vern.cc) | 🇺🇸 US | English | |
|
| [https://wg.vern.cc](https://wg.vern.cc) | 🇺🇸 US | English | |
|
||||||
| [https://whoogle.hxvy0.gq](https://whoogle.hxvy0.gq) | 🇨🇦 CA | Turkish Only | ✅ |
|
| [https://whoogle.hxvy0.gq](https://whoogle.hxvy0.gq) | 🇨🇦 CA | Turkish Only | ✅ |
|
||||||
| [https://whoogle.hostux.net](https://whoogle.hostux.net) | 🇫🇷 FR | Multi-choice | |
|
| [https://whoogle.hostux.net](https://whoogle.hostux.net) | 🇫🇷 FR | Multi-choice | |
|
||||||
|
@ -662,7 +662,10 @@ A lot of the app currently piggybacks on Google's existing support for fetching
|
||||||
| [https://wgl.frail.duckdns.org](https://wgl.frail.duckdns.org) | 🇧🇷 BR | Multi-choice | |
|
| [https://wgl.frail.duckdns.org](https://wgl.frail.duckdns.org) | 🇧🇷 BR | Multi-choice | |
|
||||||
| [https://whoogle.no-logs.com](https://whoogle.no-logs.com/) | 🇸🇪 SE | Multi-choice | |
|
| [https://whoogle.no-logs.com](https://whoogle.no-logs.com/) | 🇸🇪 SE | Multi-choice | |
|
||||||
| [https://search.rubberverse.xyz](https://search.rubberverse.xyz) | 🇵🇱 PL | English | |
|
| [https://search.rubberverse.xyz](https://search.rubberverse.xyz) | 🇵🇱 PL | English | |
|
||||||
| [https://whoogle.link](https://whoogle.link) | 🇩🇪 DE | Multi-choice | |
|
| [https://whoogle.ftw.lol](https://whoogle.ftw.lol) | 🇩🇪 DE | Multi-choice | |
|
||||||
|
| [https://whoogle-search--replitcomreside.repl.co](https://whoogle-search--replitcomreside.repl.co) | 🇺🇸 US | English | |
|
||||||
|
| [https://search.notrustverify.ch](https://search.notrustverify.ch) | 🇨🇭 CH | Multi-choice | |
|
||||||
|
| [https://whoogle.datura.network](https://whoogle.datura.network) | 🇩🇪 DE | Multi-choice | |
|
||||||
|
|
||||||
|
|
||||||
* A checkmark in the "Cloudflare" category here refers to the use of the reverse proxy, [Cloudflare](https://cloudflare.com). The checkmark will not be listed for a site which uses Cloudflare DNS but rather the proxying service which grants Cloudflare the ability to monitor traffic to the website.
|
* A checkmark in the "Cloudflare" category here refers to the use of the reverse proxy, [Cloudflare](https://cloudflare.com). The checkmark will not be listed for a site which uses Cloudflare DNS but rather the proxying service which grants Cloudflare the ability to monitor traffic to the website.
|
||||||
|
@ -674,7 +677,8 @@ A lot of the app currently piggybacks on Google's existing support for fetching
|
||||||
| [http://whoglqjdkgt2an4tdepberwqz3hk7tjo4kqgdnuj77rt7nshw2xqhqad.onion](http://whoglqjdkgt2an4tdepberwqz3hk7tjo4kqgdnuj77rt7nshw2xqhqad.onion) | 🇺🇸 US | Multi-choice
|
| [http://whoglqjdkgt2an4tdepberwqz3hk7tjo4kqgdnuj77rt7nshw2xqhqad.onion](http://whoglqjdkgt2an4tdepberwqz3hk7tjo4kqgdnuj77rt7nshw2xqhqad.onion) | 🇺🇸 US | Multi-choice
|
||||||
| [http://nuifgsnbb2mcyza74o7illtqmuaqbwu4flam3cdmsrnudwcmkqur37qd.onion](http://nuifgsnbb2mcyza74o7illtqmuaqbwu4flam3cdmsrnudwcmkqur37qd.onion) | 🇩🇪 DE | English
|
| [http://nuifgsnbb2mcyza74o7illtqmuaqbwu4flam3cdmsrnudwcmkqur37qd.onion](http://nuifgsnbb2mcyza74o7illtqmuaqbwu4flam3cdmsrnudwcmkqur37qd.onion) | 🇩🇪 DE | English
|
||||||
| [http://whoogle.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion](http://whoogle.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion/) | 🇺🇸 US | English |
|
| [http://whoogle.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion](http://whoogle.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion/) | 🇺🇸 US | English |
|
||||||
| [http://whoogle.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion](http://whoogle.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion/) | 🇳🇱 NL | English |
|
| [http://whoogle.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion](http://whoogle.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion/) | 🇫🇷 FR | English |
|
||||||
|
| [http://whoogle.daturab6drmkhyeia4ch5gvfc2f3wgo6bhjrv3pz6n7kxmvoznlkq4yd.onion](http://whoogle.daturab6drmkhyeia4ch5gvfc2f3wgo6bhjrv3pz6n7kxmvoznlkq4yd.onion/) | 🇩🇪 DE | Multi-choice | |
|
||||||
|
|
||||||
#### I2P Instances
|
#### I2P Instances
|
||||||
|
|
||||||
|
|
|
@ -557,18 +557,19 @@ class Filter:
|
||||||
is enabled
|
is enabled
|
||||||
"""
|
"""
|
||||||
for site, alt in SITE_ALTS.items():
|
for site, alt in SITE_ALTS.items():
|
||||||
for div in self.soup.find_all('div', text=re.compile(site)):
|
if site != "medium.com" and alt != "":
|
||||||
# Use the number of words in the div string to determine if the
|
# Ignore medium.com replacements since these are handled
|
||||||
# string is a result description (shouldn't replace domains used
|
|
||||||
# in desc text).
|
|
||||||
# Also ignore medium.com replacements since these are handled
|
|
||||||
# specifically in the link description replacement, and medium
|
# specifically in the link description replacement, and medium
|
||||||
# results are never given their own "card" result where this
|
# results are never given their own "card" result where this
|
||||||
# replacement would make sense.
|
# replacement would make sense.
|
||||||
if site == 'medium.com' or len(div.string.split(' ')) > 1:
|
# Also ignore if the alt is empty, since this is used to indicate
|
||||||
continue
|
# that the alt is not enabled.
|
||||||
|
for div in self.soup.find_all('div', text=re.compile(site)):
|
||||||
div.string = div.string.replace(site, alt)
|
# Use the number of words in the div string to determine if the
|
||||||
|
# string is a result description (shouldn't replace domains used
|
||||||
|
# in desc text).
|
||||||
|
if len(div.string.split(' ')) == 1:
|
||||||
|
div.string = div.string.replace(site, alt)
|
||||||
|
|
||||||
for link in self.soup.find_all('a', href=True):
|
for link in self.soup.find_all('a', href=True):
|
||||||
# Search and replace all link descriptions
|
# Search and replace all link descriptions
|
||||||
|
@ -592,7 +593,7 @@ class Filter:
|
||||||
# replaced (i.e. 'philomedium.com' should stay as it is).
|
# replaced (i.e. 'philomedium.com' should stay as it is).
|
||||||
if 'medium.com' in link_str:
|
if 'medium.com' in link_str:
|
||||||
if link_str.startswith('medium.com') or '.medium.com' in link_str:
|
if link_str.startswith('medium.com') or '.medium.com' in link_str:
|
||||||
link_str = 'farside.link/scribe' + link_str[
|
link_str = SITE_ALTS['medium.com'] + link_str[
|
||||||
link_str.find('medium.com') + len('medium.com'):]
|
link_str.find('medium.com') + len('medium.com'):]
|
||||||
new_desc.string = link_str
|
new_desc.string = link_str
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -557,6 +557,15 @@ def window():
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route(f'/robots.txt')
|
||||||
|
def robots():
|
||||||
|
response = make_response(
|
||||||
|
'''User-Agent: *
|
||||||
|
Disallow: /''', 200)
|
||||||
|
response.mimetype = 'text/plain'
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
@app.errorhandler(404)
|
@app.errorhandler(404)
|
||||||
def page_not_found(e):
|
def page_not_found(e):
|
||||||
return render_template('error.html', error_message=str(e)), 404
|
return render_template('error.html', error_message=str(e)), 404
|
||||||
|
|
|
@ -1075,12 +1075,12 @@
|
||||||
"books": "Pirtûk",
|
"books": "Pirtûk",
|
||||||
"anon-view": "Dîtina Nenas",
|
"anon-view": "Dîtina Nenas",
|
||||||
"": "--",
|
"": "--",
|
||||||
"qdr:h": "Saet berê",
|
"qdr:h": "Demjimêra borî",
|
||||||
"qdr:d": "24 saetên borî",
|
"qdr:d": "24 Demjimêrên borî",
|
||||||
"qdr:w": "Hefteya borî",
|
"qdr:w": "Hefteya borî",
|
||||||
"qdr:m": "Meha borî",
|
"qdr:m": "Meha borî",
|
||||||
"qdr:y": "Sala borî",
|
"qdr:y": "Sala borî",
|
||||||
"config-time-period": "Dem Period"
|
"config-time-period": "Pêşsazkariyên demê"
|
||||||
},
|
},
|
||||||
"lang_th": {
|
"lang_th": {
|
||||||
"search": "ค้นหา",
|
"search": "ค้นหา",
|
||||||
|
|
|
@ -16,4 +16,7 @@ https://whoogle3.ungovernable.men
|
||||||
https://wgl.frail.duckdns.org
|
https://wgl.frail.duckdns.org
|
||||||
https://whoogle.no-logs.com
|
https://whoogle.no-logs.com
|
||||||
https://search.rubberverse.xyz
|
https://search.rubberverse.xyz
|
||||||
https://whoogle.link
|
https://whoogle.ftw.lol
|
||||||
|
https://whoogle-search--replitcomreside.repl.co
|
||||||
|
https://search.notrustverify.ch
|
||||||
|
https://whoogle.datura.network
|
||||||
|
|
|
@ -7,3 +7,6 @@ ExtORPortCookieAuthFileGroupReadable 1
|
||||||
CacheDirectoryGroupReadable 1
|
CacheDirectoryGroupReadable 1
|
||||||
CookieAuthFile /var/lib/tor/control_auth_cookie
|
CookieAuthFile /var/lib/tor/control_auth_cookie
|
||||||
Log debug-notice file /dev/null
|
Log debug-notice file /dev/null
|
||||||
|
# UseBridges 1
|
||||||
|
# ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy
|
||||||
|
# Bridge obfs4 ip and so on
|
||||||
|
|
|
@ -2,12 +2,12 @@ attrs==22.2.0
|
||||||
beautifulsoup4==4.11.2
|
beautifulsoup4==4.11.2
|
||||||
brotli==1.0.9
|
brotli==1.0.9
|
||||||
cachelib==0.10.2
|
cachelib==0.10.2
|
||||||
certifi==2022.12.7
|
certifi==2023.7.22
|
||||||
cffi==1.15.1
|
cffi==1.15.1
|
||||||
chardet==5.1.0
|
chardet==5.1.0
|
||||||
click==8.1.3
|
click==8.1.3
|
||||||
cryptography==3.3.2; platform_machine == 'armv7l'
|
cryptography==3.3.2; platform_machine == 'armv7l'
|
||||||
cryptography==39.0.1; platform_machine != 'armv7l'
|
cryptography==41.0.3; platform_machine != 'armv7l'
|
||||||
cssutils==2.6.0
|
cssutils==2.6.0
|
||||||
defusedxml==0.7.1
|
defusedxml==0.7.1
|
||||||
Flask==2.3.2
|
Flask==2.3.2
|
||||||
|
@ -21,7 +21,7 @@ pluggy==1.0.0
|
||||||
pycodestyle==2.10.0
|
pycodestyle==2.10.0
|
||||||
pycparser==2.21
|
pycparser==2.21
|
||||||
pyOpenSSL==19.1.0; platform_machine == 'armv7l'
|
pyOpenSSL==19.1.0; platform_machine == 'armv7l'
|
||||||
pyOpenSSL==23.0.0; platform_machine != 'armv7l'
|
pyOpenSSL==23.2.0; platform_machine != 'armv7l'
|
||||||
pyparsing==3.0.9
|
pyparsing==3.0.9
|
||||||
PySocks==1.7.1
|
PySocks==1.7.1
|
||||||
pytest==7.2.1
|
pytest==7.2.1
|
||||||
|
|
新しいイシューから参照