Proxy Redirect

Redirect to privacy respecting proxy frontends

目前為 2023-06-10 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Proxy Redirect
  3. // @author Schimon Jehudah, Adv.
  4. // @homepageURL https://gf.qytechs.cn/scripts/465936-proxy-redirect
  5. // @supportURL https://gf.qytechs.cn/scripts/465936-proxy-redirect/feedback
  6. // @copyright 2023, Schimon Jehudah (http://schimon.i2p)
  7. // @license AGPL-3.0-only; https://www.gnu.org/licenses/agpl-3.0.en.html
  8. // @namespace i2p.schimon.proxy-redirect
  9. // @description Redirect to privacy respecting proxy frontends
  10. // @run-at document-start
  11. // @version 23.06.10
  12. // @grant GM_xmlhttpRequest
  13. // @grant GM.xmlHttpRequest
  14. // @exclude *#noredirect
  15. // @match *://bandcamp.com/*
  16. // @match *://*.bandcamp.com/*
  17. // @match *://bilibili.com/*
  18. // @match *://*.bilibili.com/*
  19. // @match *://bing.com/maps*
  20. // @match *://www.bing.com/maps*
  21. // @match *://bing.com/search*
  22. // @match *://www.bing.com/search*
  23. // @match *://bt4g.org/magnet/*
  24. // @match *://*.bt4g.org/magnet/*
  25. // @match *://*.fandom.com/wiki/*
  26. // @match *://gist.github.com/*
  27. // @match *://github.com/*
  28. // @match *://*.github.com/*
  29. // @exclude *://github.com/*/*/*
  30. // @exclude *://github.com/events
  31. // @exclude *://github.com/events/*
  32. // @exclude *://github.com/login*
  33. // @exclude *://github.com/notifications*
  34. // @exclude *://github.com/sessions*
  35. // @exclude *://github.com/signup*
  36. // @exclude *://github.com/topics
  37. // @exclude *://github.com/topics/*
  38. // @match *://gitlab.com/*
  39. // @match *://goodreads.com/*
  40. // @match *://*.goodreads.com/*
  41. // @match /^(https?:\/\/)?(www\.)?google\.[^\/]+\/maps/i
  42. // @match /^(https?:\/\/)?(www\.)?google\.[^\/]+\/search/i
  43. // @match *://google.com/search*
  44. // @match *://www.google.com/search*
  45. // @match *://google.com/sorry*
  46. // @match *://consent.google.com/*
  47. // @match *://www.google.com/sorry*
  48. // @match *://translate.google.com/*
  49. // @match *://imdb.com/*
  50. // @match *://www.imdb.com/*
  51. // @exclude *://imdb.com/*/*/reviews/*
  52. // @exclude *://www.imdb.com/*/*/reviews/*
  53. // @match *://imgur.com/*
  54. // @match *://i.imgur.com/*
  55. // @match *://instagram.com/*
  56. // @match *://www.instagram.com/*
  57. // @match *://invidious-invidious.invidious.svc.cluster.local:3000/*
  58. // @match *://medium.com/*
  59. // @match *://*.medium.com/*
  60. // @exclude */v2/*
  61. // @exclude */c/*
  62. // @exclude */fit/*
  63. // @exclude */resize:fit:*
  64. // @exclude */format:*
  65. // @match *://moovitapp.com/*
  66. // @match *://*.moovitapp.com/*
  67. // @match *://odysee.com/*
  68. // @match *://*.odysee.com/*
  69. // @match *://quora.com/*
  70. // @match *://*.quora.com/*
  71. // @match *://reuters.com/*
  72. // @match *://*.reuters.com/*
  73. // @match *://tiktok.com/*
  74. // @match *://*.tiktok.com/*
  75. // @match *://reddit.com/*
  76. // @match *://*.reddit.com/*
  77. // @match *://stackoverflow.com/questions/*
  78. // @exclude *://stackoverflow.com/questions/tagged/*
  79. // @match *://www.torrentdownload.info/*
  80. // @exclude *://www.torrentdownload.info/feed_latest
  81. // @exclude *://www.torrentdownload.info/search?q=*
  82. // @match *://torrentz.eu/*
  83. // @exclude *://torrentz.eu/search?f=*
  84. // @match *://*.torrentz.eu/*
  85. // @exclude *://*.torrentz.eu/search?f=*
  86. // @match *://torrentz.me/*
  87. // @exclude *://torrentz.me/search?f=*
  88. // @match *://*.torrentz.me/*
  89. // @exclude *://*.torrentz.me/search?f=*
  90. // @match *://torrentz2.eu/*
  91. // @exclude *://torrentz2.eu/search?f=*
  92. // @match *://torrentz2.is/*
  93. // @exclude *://torrentz.is/search?f=*
  94. // @match *://*.torrentz2.is/*
  95. // @exclude *://*.torrentz.is/search?f=*
  96. // @match *://twitter.com/*
  97. // @exclude *://twitter.com/intent/*
  98. // @match *://*.twitter.com/*
  99. // @exclude *://*.twitter.com/intent/*
  100. // @match *://urbandictionary.com/*
  101. // @match *://*.urbandictionary.com/*
  102. // @match *://userscripts.org/*
  103. // @match *://*.userscripts.org/*
  104. // @match *://waze.com/live-map*
  105. // @match *://*.waze.com/live-map*
  106. // @match *://waze.com/ul*
  107. // @match *://*.waze.com/ul*
  108. // @match *://ul.waze.com/ul*
  109. // @match *://wikimap.toolforge.org/*
  110. // @match *://wikipedia.org/*
  111. // @match *://*.wikipedia.org/*
  112. // @match *://yahoo.com/search*
  113. // @match *://www.yahoo.com/search*
  114. // @match *://search.yahoo.co.jp/search?p=*
  115. // @match *://search.yahoo.com/?q=*
  116. // @match *://yandex.com/search*
  117. // @match *://www.yandex.com/search*
  118. // @match *://yandex.com/maps/*
  119. // @match *://www.yandex.com/maps/*
  120. // @match *://yandex.ru/search*
  121. // @match *://www.yandex.ru/search*
  122. // @match *://translate.yandex.com/*
  123. // @match *://youtu.be/*
  124. // @match *://youtube.com/*
  125. // @match *://*.youtube.com/*
  126. // @match *://youtube-nocookie.com/*
  127. // @match *://*.youtube-nocookie.com/*
  128. // @connect 0011.lt
  129. // @connect 076.ne.jp
  130. // @connect 1d4.us
  131. // @connect 2syis2nnyytz6jnusnjurva4swlaizlnleiks5mjp46phuwjbdjqwgqd.onion
  132. // @connect 40two.app
  133. // @connect 42l.fr
  134. // @connect 777.tf
  135. // @connect actionsack.com
  136. // @connect adminforge.de
  137. // @connect akisblack.dev
  138. // @connect albony.xyz
  139. // @connect alefvanoon.xyz
  140. // @connect artemislena.eu
  141. // @connect asynchronousexchange.com
  142. // @connect batsense.net
  143. // @connect bibliogram.art
  144. // @connect biblioreads.ga
  145. // @connect biblioreads.ml
  146. // @connect bloatcat.tk
  147. // @connect btdig.i2p
  148. // @connect btdig.com
  149. // @connect btdigggink2pdqzqrik3blmqemsbntpzwxottujilcdjfz56jumzfsyd.onion
  150. // @connect bus-hit.me
  151. // @connect cadence.moe
  152. // @connect catfluori.de
  153. // @connect cblgh.org
  154. // @connect censors.us
  155. // @connect citizen4.eu
  156. // @connect cowfee.moe
  157. // @connect crewz.me
  158. // @connect cn.i2p
  159. // @connect cthd.icu
  160. // @connect datatunnel.xyz
  161. // @connect domain.glass
  162. // @connect duckdns.org
  163. // @connect dynabyte.ca
  164. // @connect ebnar.xyz
  165. // @connect esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion
  166. // @connect esmailelbob.xyz
  167. // @connect etsi.me
  168. // @connect exarius.org
  169. // @connect farside.link
  170. // @connect fdn.fr
  171. // @connect flokinet.to
  172. // @connect flux.industries
  173. // @connect fmac.xyz
  174. // @connect foss.wtf
  175. // @connect froth.zone
  176. // @connect ggc-project.de
  177. // @connect gnu.style
  178. // @connect grimneko.de
  179. // @connect hostux.net
  180. // @connect hyperborea.cloud
  181. // @connect iket.me
  182. // @connect il.ax
  183. // @connect incogsnoo.com
  184. // @connect invak.id
  185. // @connect jamiethalacker.dev
  186. // @connect jeikobu.net
  187. // @connect jewtube.i2p
  188. // @connect josias.dev
  189. // @connect jpope.org
  190. // @connect k62ptris7p72aborr4zoanee7xai6wguucveptwgxs5vbgt7qzpq.b32.i2p
  191. // @connect kavin.rocks
  192. // @connect kylrth.com
  193. // @connect ledditqo2mxfvlgobxnlhrkq4dh34jss6evfkdkb2thlvy6dn4f4gpyd.onion
  194. // @connect libredd.it
  195. // @connect libreddit.de
  196. // @connect libreddit.eu.org
  197. // @connect libreddit.hu
  198. // @connect libreddit.nl
  199. // @connect lingva.ml
  200. // @connect lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onion
  201. // @connect lunar.icu
  202. // @connect melmac.space
  203. // @connect mint.lgbt
  204. // @connect moeyy.cn
  205. // @connect mutahar.rocks
  206. // @connect moomoo.me
  207. // @connect mywire.org
  208. // @connect namazso.eu
  209. // @connect mdosch.de
  210. // @connect monocles.de
  211. // @connect neet.works
  212. // @connect neuters.de
  213. // @connect netlify.app
  214. // @connect nitter.ca
  215. // @connect nitter.hu
  216. // @connect nitter.it
  217. // @connect nitter.net
  218. // @connect nixnet.services
  219. // @connect no-logs.com
  220. // @connect northboot.xyz
  221. // @connect nttr.stream
  222. // @connect odyssey346.dev
  223. // @connect ononoki.org
  224. // @connect ooguy.com
  225. // @connect openstreetmap.org
  226. // @connect osi.kr
  227. // @connect oversold.host
  228. // @connect owacon.moe
  229. // @connect pabloferreiro.es
  230. // @connect paulgo.io
  231. // @connect phreedom.club
  232. // @connect piped.video
  233. // @connect poketube.fun
  234. // @connect privacy.com.de
  235. // @connect projectsegfau.lt
  236. // @connect procurx.pt
  237. // @connect prvcy.eu
  238. // @connect puffyan.us
  239. // @connect pussthecat.org
  240. // @connect r.nf
  241. // @connect rabbit-company.com
  242. // @connect rasp.fr
  243. // @connect resrv.org
  244. // @connect riverside.rocks
  245. // @connect rtrace.io
  246. // @connect scribe.rip
  247. // @connect searx.be
  248. // @connect searx.ninja
  249. // @connect searx.ru
  250. // @connect sethforprivacy.com
  251. // @connect simplytranslate.org
  252. // @connect slipfox.xyz
  253. // @connect smnz.de
  254. // @connect snopyta.org
  255. // @connect sny.sh
  256. // @connect some-things.org
  257. // @connect sp-codes.de
  258. // @connect spike.codes
  259. // @connect spjmllawtheisznfs7uryhxumin26ssv2draj7oope3ok3wuhy43eoyd.onion
  260. // @connect strongthany.cc
  261. // @connect stuehieyr.com
  262. // @connect sugoma.tk
  263. // @connect syncpundit.com
  264. // @connect teddit.i2p
  265. // @connect teddit.net
  266. // @connect tedditfyn6idalzso5wam5qd3kdtxoljjhbrbbx34q2xkcisvshuytad.onion
  267. // @connect theanonymouse.xyz
  268. // @connect tinfoil-hat.net
  269. // @connect tiekoetter.com
  270. // @connect tokhmi.xyz
  271. // @connect totaldarkness.net
  272. // @connect trom.tf
  273. // @connect tromdienste.de
  274. // @connect tux.land
  275. // @connect tuxcloud.net
  276. // @connect tyil.nl
  277. // @connect unixfox.eu
  278. // @connect unofficialbird.com
  279. // @connect userscripts-mirror.org
  280. // @connect vernapl3lpo3huqdx3pjzxqgdgavxjlmdskbvejh2gfqgmjuyvxq.b32.i2p
  281. // @connect vernaqj2qr2pijpgvf3od6ssc3ulz3nv52gwr3hba5l6humuzmgq.b32.i2p
  282. // @connect vernmzgraj6aaoafmehupvtkkynpaa67rxcdj2kinwiy6konn6rq.b32.i2p
  283. // @connect vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion
  284. // @connect vern.cc
  285. // @connect vern.i2p
  286. // @connect voidnet.tech
  287. // @connect vojkovic.xyz
  288. // @connect voring.me
  289. // @connect walkx.org
  290. // @connect webheberg.info
  291. // @connect weblibre.org
  292. // @connect whatever.social
  293. // @connect whatevertinfoil.de
  294. // @connect wikiless.i2p
  295. // @connect wikiless.org
  296. // @connect winscloud.net
  297. // @connect xn--17b.net
  298. // @connect yewtu.be
  299. // @connect yonalee.eu
  300. // @connect ytmous.i2p
  301. // @connect xanny.family
  302. // @connect yacy.iko.soy
  303. // @connect zackptg5.com
  304. // @connect zaggy.nl
  305. // @connect zhaocloud.net
  306. // @icon data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjRtbSIgaGVpZ2h0PSI2NG1tIiB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHRleHQgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgc3R5bGU9ImZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTkycHg7bGluZS1oZWlnaHQ6MDt0ZXh0LWluZGVudDowO3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwO3dyaXRpbmctbW9kZTpsci10YjtkaXJlY3Rpb246bHRyO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7ZG9taW5hbnQtYmFzZWxpbmU6YXV0bztiYXNlbGluZS1zaGlmdDpiYXNlbGluZTt0ZXh0LWFuY2hvcjpzdGFydDtzaGFwZS1wYWRkaW5nOjA7c2hhcGUtbWFyZ2luOjA7aW5saW5lLXNpemU6MDtvcGFjaXR5OjE7ZmlsbDojMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDoxLjI3OTgyO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxO3N0b3AtY29sb3I6IzAwMDtzdG9wLW9wYWNpdHk6MSIgeD0iMTcuMDA1MjQ1IiB5PSIzMS42NTg0MDUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00LjQzNjg1NjQgNDAuODk0OTQpIHNjYWxlKC4yNjQ1OCkiPjx0c3BhbiB4PSIxNy4wMDUyNDUiIHk9IjMxLjY1ODQwNSIgc3R5bGU9ImZvbnQtc2l6ZToxOTJweCI+8J+luDwvdHNwYW4+PC90ZXh0Pjwvc3ZnPgo=
  307. // ==/UserScript==
  308.  
  309. //TODO
  310. //Rebrand: Open Redirect, Proxy Redirect
  311. //Rebrand: Freelink, LibreProxy, Libreproxy, Open Link, Proxy Direct, Proxy Link, Proxy Redirect
  312.  
  313. /*
  314.  
  315. <!-- **Read:** Appeal to [Falkon (QupZilla) Web Browser](#-help-enhancing-userscript-support-for-falkon-web-browser) - Part of the KDE Project -->
  316.  
  317. ## 🕶️ Proxy Redirect <!-- 😎➿⏭️🔁➰ -->
  318. ### _Redirection userscript for privacy-oriented and open-source proxy frontends._
  319.  
  320. Proxy Redirect automatically redirects to instances of privacy-oriented frontends, such as Scribe, Nitter, Libreddit, etc.
  321.  
  322. This allows more reliable access to available public instances per service, while also helping to distribute traffic more evenly across all instances and avoid performance bottlenecks and rate-limiting.
  323.  
  324. ---
  325.  
  326. #### Recommended Userscripts
  327.  
  328. #### ⛓️ [Proxify Links](https://openuserjs.org/scripts/sjehuda/Proxify_Links)
  329. Correct links to privacy respecting proxy frontends.
  330.  
  331. ---
  332.  
  333. #### Please visit our counterparts
  334.  
  335. #### Userscript
  336.  
  337. #### [GreaseMonkey-Redirect](https://codeberg.org/zortazert/GreaseMonkey-Redirect)
  338. Collection of user created GreaseMonkey scripts that will convert privacy disrespecting websites to FOSS/Libre alternatives.
  339.  
  340. #### [Search Engine Jumper](https://openuserjs.org/scripts/sycom/Search_Engine_Jumper) (Search Engine Kangaroo)
  341. When using some search engines the script creates links to a long list of alternative search engines. Don't be a search engine prisoner
  342.  
  343. #### Web Extension
  344.  
  345. #### [Privacy-Redirect](https://github.com/SimonBrazell/privacy-redirect#get)
  346. Simple web extension that redirects requests to privacy friendly counterparts.
  347.  
  348. #### [LibRedirect](https://libredirect.github.io/)
  349. ##### Based on [Privacy-Redirect](#privacy-redirect)
  350. Web extension that redirects requests to privacy friendly frontends and backends.
  351.  
  352. #### [Invidition](https://codeberg.org/Booteille/invidition#downloads)
  353. ##### Deprecated in favor of [Privacy-Redirect](#privacy-redirect)
  354. Invidition is an extension allowing you to redirect requests to their counterparts before loading them.
  355.  
  356. #### Mobile App
  357.  
  358. #### [UntrackMe](https://framagit.org/tom79/nitterizeme#download)
  359. A small application that allows to handle requests and redirect them to their Nitter or Invidious URLs and open them with the appropriate app.
  360.  
  361. #### Server
  362.  
  363. #### [Farside](https://farside.link/)
  364. Redirecting service for FOSS frontends.
  365.  
  366. ---
  367.  
  368. #### <!-- img src="https://raw.githubusercontent.com/KDE/falkon/master/logo.png" height="30" alt="Falkon" title="Download Falkon Browser"/ --> Help enhancing userscript support for <span style='color:MediumPurple'>Falkon web browser</span>
  369. C++ developers, please help [Falkon](https://falkon.org/) web browser‬ to bring [better support](https://bugs.kde.org/show_bug.cgi?id=466533) for [GM.xmlHttpRequest](https://sourceforge.net/p/greasemonkey/wiki/GM_xmlhttpRequest/).
  370.  
  371. If you find this program useful, please help Falkon so we would also be able to enjoy this program. Web browsers that respect our privacy are rare. That's why Falkon is important.
  372.  
  373. ##### Disclosure: This program was made particularly for people who use Falkon, Jumanji, Opera, Otter, Pale Moon, Surf, Uzbl and other web browsers with Userscript support, to which non has a redirector extension like [Privacy-Redirect](#privacy-redirect).
  374.  
  375. _Sincerely,
  376. Schimon Jehudah, Adv._
  377.  
  378. */
  379.  
  380. /*
  381.  
  382. NOTE
  383. This program was inspired by Farside project from Ben Busby
  384. For more information: https://farside.link
  385.  
  386. TODO Brand
  387. FreeDirector, Free Direct, FreeDirect.js
  388. Open Redirector, Open Redirect, Open Direct, OpenDirect.js
  389. Redirect.js, Redirect.user.js, Redirector.js
  390. UserDirect, UserRedirect
  391.  
  392. FIXME
  393. // @match *://*.imgur.com/*
  394. // @exclude *://i.*.imgur.com/*
  395.  
  396. FIXME RegEx
  397. // @exclude /*.medium\.com\/*\/(c|fit|v2)\/.*$/
  398.  
  399. */
  400.  
  401. // https://github.com/makyen
  402. // https://github.com/greasemonkey/greasemonkey/issues/3160#issuecomment-1456758080
  403. const gmXmlhttpRequest = typeof GM_xmlhttpRequest === 'function' ? GM_xmlhttpRequest : GM.xmlHttpRequest;
  404.  
  405. var
  406. loop, attemptCounter = 0,
  407. hostname, pathname,
  408. inst, addr, brand, code, cord, hash, lang, name, para, paras,
  409. farside, partedURL, path, proxyArray, urlArray, instance, modURL, newURL;
  410.  
  411. //const url = location.href;
  412.  
  413. const proxy = {
  414. 'anonymousoverflow' : [
  415. 'http://anonymousoverflow.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion/',
  416. 'http://ao.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion/',
  417. 'http://vernmzgraj6aaoafmehupvtkkynpaa67rxcdj2kinwiy6konn6rq.b32.i2p/',
  418. 'https://anonymousoverflow.esmailelbob.xyz',
  419. 'https://anonymousoverflow.vern.cc',
  420. 'https://ao.bloatcat.tk/',
  421. //'https://ao.foss.wtf',
  422. //'https://ao.vern.cc',
  423. 'https://code.whatever.social',
  424. 'https://stackoverflow.vern.cc',
  425. //'https://overflow.777.tf',
  426. 'https://overflow.adminforge.de',
  427. 'https://overflow.hostux.net',
  428. 'https://overflow.lunar.icu',
  429. 'https://overflow.smnz.de'
  430. ], // AnonymousOverflow
  431. 'bibliogram' : [
  432. 'http://qsuiaf4jio2yaxdbj6ljte3jmr6m7g333rujoilbtipjeawnou26frad.onion',
  433. 'https://bib.actionsack.com',
  434. 'https://bib.riverside.rocks',
  435. 'https://biblio.alefvanoon.xyz',
  436. 'https://bibliogram.1d4.us',
  437. 'https://bibliogram.art',
  438. 'https://bibliogram.domain.glass',
  439. 'https://bibliogram.esmailelbob.xyz',
  440. 'https://bibliogram.froth.zone',
  441. 'https://bibliogram.pussthecat.org',
  442. 'https://bibliogram.snopyta.org',
  443. 'https://farside.link/bibliogram',
  444. 'https://insta.trom.tf',
  445. 'https://insta.tromdienste.de'
  446. ], // Bibliogram
  447. 'biblioreads' : [
  448. 'http://biblioreads.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  449. 'http://bl.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  450. 'http://vernapl3lpo3huqdx3pjzxqgdgavxjlmdskbvejh2gfqgmjuyvxq.b32.i2p',
  451. 'https://biblioreads.ga',
  452. 'https://biblioreads.ml',
  453. 'https://biblioreads.esmailelbob.xyz',
  454. 'https://biblioreads.lunar.icu',
  455. 'https://biblioreads.netlify.app',
  456. 'https://bl.vern.cc'
  457. ], // BiblioReads
  458. 'btdigg' : [
  459. 'https://btdig.com',
  460. 'http://btdigggink2pdqzqrik3blmqemsbntpzwxottujilcdjfz56jumzfsyd.onion/',
  461. 'http://btdig.i2p'
  462. ], // BTDigg
  463. 'breezewiki' : [
  464. 'https://antifandom.com',
  465. //'https://breeze.777.tf',
  466. 'https://breeze.hostux.net',
  467. //'https://breezewiki.com',
  468. 'https://breezewiki.pussthecat.org',
  469. 'https://bw.artemislena.eu',
  470. 'https://bw.projectsegfau.lt'
  471. ], // BreezeWiki
  472. 'cloudtube' : [
  473. 'https://tube.cadence.moe'
  474. ], // CloudTube
  475. 'gothub' : [
  476. 'https://dev.gh.akisblack.dev',
  477. //'https://gh.777.tf',
  478. 'https://gh.akisblack.dev',
  479. 'https://gh.bloatcat.tk/',
  480. 'https://gh.creller.net',
  481. 'https://gh.fascinated.cc',
  482. //'https://gh.odyssey346.dev',
  483. 'https://gh.phreedom.club',
  484. 'https://gh.riverside.rocks',
  485. //'https://gh.vern.cc',
  486. 'https://gothub.dev.projectsegfau.lt',
  487. 'https://gothub.esmailelbob.xyz',
  488. 'https://gothub.lunar.icu',
  489. 'https://gothub.no-logs.com',
  490. 'https://gothub.projectsegfau.lt',
  491. 'https://gothub.xbdm.fun'
  492. ], // GotHub
  493. 'imgin' : [
  494. 'https://farside.link/imgin',
  495. 'https://imgin.voidnet.tech'
  496. ], // imgin
  497. 'invidious' : [
  498. 'http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion',
  499. 'http://euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd.onion',
  500. 'http://grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion',
  501. 'http://inv.cn.i2p',
  502. 'http://inv.vern.i2p',
  503. 'http://jewtube.i2p',
  504. 'http://ytmous.i2p',
  505. 'http://invidious.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  506. 'http://invidious.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion',
  507. 'http://iv.odysfvr23q5wgt7i456o5t3trw2cw5dgn56vbjfbq2m7xsc5vqbqpcyd.onion',
  508. 'http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion',
  509. 'http://ng27owmagn5amdm7l5s3rsqxwscl5ynppnis5dqcasogkyxcfqn7psid.onion',
  510. 'http://osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd.onion',
  511. 'http://pa7eextqat4wg35onzs4cnlhqa3gvzen243bcbrng67zyla4fqya.b32.i2p',
  512. 'http://qwikxxt6jvggxzxe2v2fuzro5j7ibgphxmblmri6wkj5vpicdbo2kwad.onion',
  513. 'http://u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad.onion',
  514. 'http://verni6dr4qxjgjumnvesxerh5rvhv6oy5ddeibaqy5d7tgbiiyfa.b32.i2p',
  515. 'http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion',
  516. 'https://farside.link/invidious',
  517. 'https://inv.bp.projectsegfau.lt',
  518. 'https://inv.odyssey346.dev',
  519. 'https://inv.riverside.rocks',
  520. 'https://inv.vern.cc',
  521. 'https://invidious.0011.lt',
  522. 'https://invidious.baczek.me',
  523. 'https://invidious.domain.glass',
  524. 'https://invidious.esmailelbob.xyz',
  525. 'https://invidious.flokinet.to',
  526. 'https://invidious.garudalinux.org',
  527. 'https://invidious.kavin.rocks',
  528. 'https://invidious.lunar.icu',
  529. 'https://invidious.mutahar.rocks',
  530. 'https://invidious.namazso.eu',
  531. 'https://invidious.nerdvpn.de',
  532. 'https://invidious.no-logs.com',
  533. //'https://invidious.osi.kr',
  534. 'https://invidious.privacydev.net',
  535. 'https://invidious.projectsegfau.lt',
  536. 'https://invidious.sethforprivacy.com',
  537. 'https://invidious.slipfox.xyz',
  538. 'https://invidious.snopyta.org',
  539. 'https://invidious.qwik.space',
  540. 'https://invidious.tiekoetter.com',
  541. 'https://invidious.tinfoil-hat.net',
  542. //'https://invidious.weblibre.org',
  543. 'https://invidious-us.kavin.rocks',
  544. 'https://iv.ggtyler.dev',
  545. 'https://iv.melmac.space',
  546. //'https://tube.cthd.icu',
  547. 'https://y.com.sb',
  548. 'https://yewtu.be',
  549. 'https://yt.artemislena.eu',
  550. 'https://yt.funami.tech',
  551. 'https://yt.oelrichsgarcia.de',
  552. 'https://vid.puffyan.us',
  553. 'https://watch.thekitty.zone',
  554. //'https://youtube.076.ne.jp',
  555. 'https://youtube.owacon.moe',
  556. 'https://yt.artemislena.eu'
  557. ], // Invidious
  558. 'laboratory' : [
  559. 'https://lab.bloatcat.tk'
  560. ], // Laboratory
  561. 'libmedium' : [
  562. 'http://md.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  563. 'http://vernaqj2qr2pijpgvf3od6ssc3ulz3nv52gwr3hba5l6humuzmgq.b32.i2p',
  564. 'https://libmedium.batsense.net',
  565. 'https://md.vern.cc',
  566. 'https://medium.hostux.net'
  567. ], // LibMedium
  568. 'libreddit' : [
  569. 'http://ecue64ybzvn6vjzl37kcsnwt4ycmbsyf74nbttyg7rkc3t3qwnj7mcyd.onion',
  570. 'http://fwhhsbrbltmrct5hshrnqlqygqvcgmnek3cnka55zj4y7nuus5muwyyd.onion',
  571. 'http://inytumdgnri7xsqtvpntjevaelxtgbjqkuqhtf6txxhwbll2fwqtakqd.onion',
  572. 'http://kphht2jcflojtqte4b4kyx7p2ahagv4debjj32nre67dxz7y57seqwyd.onion',
  573. 'http://kzhfp3nvb4qp575vy23ccbrgfocezjtl5dx66uthgrhu7nscu6rcwjyd.onion',
  574. 'http://lbrdtjaj7567ptdd4rv74lv27qhxfkraabnyphgcvptl64ijx2tijwid.onion',
  575. 'http://ledditqo2mxfvlgobxnlhrkq4dh34jss6evfkdkb2thlvy6dn4f4gpyd.onion',
  576. 'http://libreddit.2syis2nnyytz6jnusnjurva4swlaizlnleiks5mjp46phuwjbdjqwgqd.onion',
  577. 'http://libreddit.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onion',
  578. 'http://libredoxhxwnmsb6dvzzd35hmgzmawsq5i764es7witwhddvpc2razid.onion',
  579. 'http://liredejj74h5xjqr2dylnl5howb2bpikfowqoveub55ru27x43357iid.onion',
  580. 'http://ol5begilptoou34emq2sshf3may3hlblvipdjtybbovpb7c7zodxmtqd.onion',
  581. 'http://qwikxx4xqvhdyyazkrw7pwdpdppfnmn7j2n6cvq5zecm4atbppaslzad.onion',
  582. 'http://spjmllawtheisznfs7uryhxumin26ssv2draj7oope3ok3wuhy43eoyd.onion',
  583. 'http://woo5ugmoomzbtaq6z46q4wgei5mqmc6jkafqfi5c37zni7xc4ymq.b32.i2p',
  584. 'https://farside.link/libreddit',
  585. 'https://discuss.whatever.social',
  586. //'https://de.leddit.xyz',
  587. //'https://leddit.xyz',
  588. //'https://libreddit.40two.app',
  589. 'https://libreddit.albony.xyz',
  590. //'https://libreddit.alefvanoon.xyz',
  591. //'https://libreddit.autarkic.org',
  592. //'https://libreddit.awesomehub.io',
  593. 'https://libreddit.bloatcat.tk/',
  594. 'https://libreddit.bus-hit.me',
  595. 'https://libreddit.crewz.me',
  596. //'https://libreddit.database.red',
  597. 'https://libreddit.datatunnel.xyz',
  598. 'https://libreddit.de',
  599. 'https://libreddit.domain.glass',
  600. //'https://libreddit.dothq.co',
  601. //'https://libreddit.drivet.xyz',
  602. 'https://libreddit.esmailelbob.xyz',
  603. 'https://libreddit.eu.org/',
  604. 'https://libreddit.flux.industries',
  605. 'https://libreddit.hu',
  606. //'https://libreddit.igna.rocks',
  607. 'https://libredd.it',
  608. 'https://libreddit.jamiethalacker.dev',
  609. 'https://libreddit.kavin.rocks',
  610. 'https://libreddit.kylrth.com',
  611. //'https://libreddit.lunar.icu',
  612. 'https://libreddit.mutahar.rocks',
  613. 'https://libreddit.nl',
  614. 'https://libreddit.no-logs.com',
  615. 'https://libreddit.northboot.xyz',
  616. 'https://libreddit.pabloferreiro.es',
  617. 'https://libreddit.privacy.com.de',
  618. 'https://libreddit.pussthecat.org',
  619. 'https://libreddit.qwik.space',
  620. //'https://libreddit.silkky.cloud',
  621. 'https://libreddit.some-things.org',
  622. 'https://libreddit.spike.codes',
  623. 'https://libreddit.strongthany.cc',
  624. 'https://libreddit.sugoma.tk',
  625. 'https://libreddit.tiekoetter.com',
  626. 'https://libreddit.totaldarkness.net',
  627. 'https://libreddit.winscloud.net',
  628. 'https://libreddit.yonalee.eu',
  629. 'https://lr.cowfee.moe',
  630. 'https://lr.foss.wtf',
  631. 'https://lr.mint.lgbt',
  632. 'https://lr.oversold.host',
  633. 'https://lr.riverside.rocks',
  634. 'https://lr.slipfox.xyz',
  635. //'https://lr.stilic.ml',
  636. 'https://r.nf',
  637. 'https://r.walkx.org',
  638. //'https://reddi.tk',
  639. 'https://reddit.artemislena.eu',
  640. 'https://reddit.invak.id',
  641. //'https://reddit.phii.me',
  642. 'https://reddit.rtrace.io',
  643. 'https://reddit.stuehieyr.com',
  644. 'https://safereddit.com'
  645. ], // libreddit
  646. 'libremdb' : [
  647. 'http://ld.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  648. 'http://libremdb.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  649. 'http://vernz3ubrntql4wrgyrssd6u3qzi36zrhz2agbo6vibzbs5olk2q.b32.i2p',
  650. 'https://binge.whatever.social',
  651. 'https://ld.vern.cc',
  652. 'https://libremdb.esmailelbob.xyz',
  653. 'https://libremdb.iket.me',
  654. 'https://libremdb.pussthecat.org',
  655. //'https://libremdbeu.herokuapp.com',
  656. 'https://libremdb.jeikobu.net',
  657. 'https://libremdb.lunar.icu',
  658. 'https://lmdb.hostux.net',
  659. 'https://lmdb.tokhmi.xyz',
  660. 'https://farside.link/libremdb'
  661. ], // libremdb
  662. 'librarian' : [
  663. 'http://5znbzx2xcymhddzekfjib3isgqq4ilcyxa2bsq6vqmnvbtgu4f776lqd.onion',
  664. 'http://bxewpsswttslepw27w2hhxhlizwm7l7y54x3jw5cfrb64hb6lgc557ad.onion',
  665. 'http://lbry.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  666. 'http://librarian.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  667. 'https://lbn.frail.duckdns.org',
  668. 'https://lbry.mywire.org',
  669. 'https://lbry.ooguy.com',
  670. 'https://lbry.projectsegfau.lt',
  671. 'https://lbry.slipfox.xyz',
  672. 'https://lbry.vern.cc',
  673. 'https://librarian.esmailelbob.xyz',
  674. 'https://librarian.pussthecat.org',
  675. //'https://odysee.076.ne.jp',
  676. 'https://odysee.owacon.moe',
  677. 'https://farside.link/librarian'
  678. ], // librarian
  679. 'librex' : [
  680. 'http://7huurwog32tny663wkglrhozfoyqyqmsuxjbd7dtudccx44awjda.b32.i2p',
  681. 'http://fcnfg6avz45hqzwbneekq57u2mqbnwa7veyvjcc4dndqbatvkjlaj7yd.onion',
  682. 'http://f7ssz7l3biu4fugwctfpcx4txg5yq4gqhrt473ledsuc3ivtd3omniid.onion',
  683. 'http://librex.revvybrr6pvbx4n3j4475h4ghw4elqr4t5xo2vtd3gfpu2nrsnhh57id.onion',
  684. 'http://librex.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion',
  685. 'http://lqbchqljxiwl3bbjt4vqe76luovk5ly6khqhg7mt5qcqfn6e4sbq.b32.i2p',
  686. 'http://lx.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  687. 'http://revekebotog64xrrammtsmjwtwlg3vqyzwdurzt2pu6botg4bejq.b32.i2p',
  688. 'http://search.cepyxplublbyw2f4axy4pyztfbxmf63lrt2c7uwv6wl4iixz53czload.onion',
  689. 'http://search.swxoebbpeqiiixyhbuh3vbw53pdrmtbiaj2sqveol6kkn5rpapfi4aad.onion',
  690. 'http://vernziqfqvweijfaacmwazohgpdo2bt2ib2jlupt2pwwu27bhgxq.b32.i2p',
  691. 'https://buscar.weblibre.org',
  692. 'https://librex.baczek.me',
  693. 'https://librex.bloatcat.tk',
  694. 'https://librex.mikata.ru',
  695. 'https://librex.myroware.eu',
  696. 'https://librex.pufe.org',
  697. 'https://librex.ratakor.com',
  698. 'https://librex.retro-hax.net',
  699. 'https://librex.revvy.de',
  700. 'https://librex.zzls.xyz',
  701. 'https://lx.drain.win',
  702. 'https://lx.vern.cc',
  703. 'https://search.ahwx.org',
  704. 'https://search.davidovski.xyz',
  705. 'https://search.femboy.hu',
  706. 'https://search.funami.tech',
  707. 'https://search.madreyk.xyz',
  708. 'https://search.milivojevic.in.rs',
  709. 'https://search.pabloferreiro.es',
  710. 'https://search.sesu.cc',
  711. 'https://search.tildevarsh.in',
  712. 'https://search.zeroish.xyz',
  713. 'https://farside.link/librex'
  714. ], // LibreX
  715. 'lieu' : [
  716. 'https://lieu.cblgh.org'
  717. ], // Lieu
  718. 'lingva' : [
  719. 'https://farside.link/lingva',
  720. 'https://lingva.ml',
  721. 'https://lingva.pussthecat.org',
  722. 'https://farside.link/lingva'
  723. ], // Lingva
  724. 'map' : [
  725. 'https://facilmap.org',
  726. 'https://www.openstreetmap.org'
  727. ], // Maps
  728. 'mikuinvidious' : [
  729. //'https://mi.resrv.org',
  730. 'https://moeyy.cn/mikuinvidious',
  731. 'https://mikuinv-gs.vern.cc',
  732. 'https://mikuinv.resrv.org'
  733. ], // MikuInvidious
  734. 'neuters' : [
  735. 'https://neuters.de'
  736. ], // Neuters
  737. 'nitter' : [
  738. 'http://tm4rwkeysv3zz3q5yacyr4rlmca2c4etkdobfvuqzt6vsfsu4weq.b32.i2p',
  739. 'http://qwikxx2erhx6qrymued6ox2qkf2yeogjwypqvzoif4fqkljixasr6oid.onion',
  740. 'https://bird.trom.tf',
  741. 'https://birdsite.xanny.family',
  742. 'https://de.nttr.stream',
  743. 'https://farside.link/nitter',
  744. 'https://n.hyperborea.cloud',
  745. 'https://nitter.1d4.us',
  746. 'https://nitter.42l.fr',
  747. 'https://nitter.actionsack.com',
  748. 'https://nitter.bus-hit.me',
  749. 'https://nitter.ca',
  750. 'https://nitter.domain.glass',
  751. //'https://nitter.eu',
  752. 'https://nitter.fdn.fr',
  753. //'https://nitter.ggc-project.de',
  754. 'https://nitter.grimneko.de',
  755. 'https://nitter.hostux.net',
  756. 'https://nitter.hu',
  757. 'https://nitter.it',
  758. //'https://nitter.kavin.rocks',
  759. //'https://nitter.koyu.space',
  760. 'https://nitter.moomoo.me',
  761. 'https://nitter.namazso.eu',
  762. 'https://nitter.net',
  763. 'https://nitter.no-logs.com',
  764. //'https://nitter.pussthecat.org',
  765. 'https://nitter.qwik.space',
  766. 'https://nitter.sethforprivacy.com',
  767. 'https://nitter.slipfox.xyz',
  768. 'https://nitter.sneed.network',
  769. 'https://nitter.unixfox.eu',
  770. 'https://nttr.stream',
  771. 'https://read.whatever.social',
  772. //'https://twitter.076.ne.jp',
  773. 'https://twitter.censors.us',
  774. 'https://twitter.owacon.moe',
  775. 'https://unofficialbird.com'
  776. ], // Nitter
  777. 'piped' : [
  778. 'https://farside.link/piped',
  779. 'https://il.ax',
  780. 'https://piped.adminforge.de',
  781. 'https://piped.chauvet.pro',
  782. 'https://piped.esmailelbob.xyz',
  783. 'https://piped.garudalinux.org',
  784. 'https://piped.hostux.net',
  785. 'https://piped.hostux.net',
  786. 'https://piped.in.projectsegfau.lt',
  787. 'https://piped.kavin.rocks',
  788. 'https://piped.lunar.icu',
  789. 'https://piped.mint.lgbt',
  790. 'https://piped.mha.fi',
  791. 'https://piped.moomoo.me',
  792. 'https://piped.no-logs.com',
  793. 'https://piped.palveluntarjoaja.eu',
  794. 'https://piped.privacy.com.de',
  795. 'https://piped.privacydev.net',
  796. 'https://piped.projectsegfau.lt',
  797. 'https://piped.qdi.fi',
  798. 'https://piped.smnz.de',
  799. 'https://piped.tokhmi.xyz',
  800. 'https://piped.tokhmi.xyz',
  801. 'https://piped.video',
  802. 'https://piped.us.projectsegfau.lt',
  803. 'https://watch.leptons.xyz',
  804. 'https://watch.whatever.social',
  805. 'https://watch.whatevertinfoil.de',
  806. 'https://yt.777.tf'
  807. ], // Piped
  808. 'pipedmaterial' : [
  809. //'https://ngp.piped.xn--17b.net',
  810. 'https://piped-material.ftp.sh',
  811. 'https://piped-material.xn--17b.net'
  812. ], // Piped Material
  813. 'poketube' : [
  814. 'https://poketube.fun',
  815. //'https://pt.zzls.xyz'
  816. ], // PokeTube
  817. 'proxitok' : [
  818. 'https://cringe.whatever.social',
  819. 'https://proxitok.pabloferreiro.es',
  820. 'https://proxitok.lunar.icu',
  821. 'https://proxitok.esmailelbob.xyz',
  822. 'https://proxitok.pabloferreiro.es',
  823. 'https://proxitok.privacy.com.de',
  824. 'https://proxitok.privacydev.net',
  825. 'https://proxitok.pufe.org',
  826. 'https://proxitok.pussthecat.org',
  827. 'https://tok.adminforge.de',
  828. 'https://tok.artemislena.eu',
  829. 'https://tok.habedieeh.re',
  830. 'https://tok.thekitty.zone',
  831. 'https://tik.hostux.net',
  832. 'https://tiktok.chauvet.pro',
  833. 'https://tt.vern.cc',
  834. 'https://farside.link/proxitok'
  835. ], // ProxiTok
  836. 'quetre' : [
  837. 'http://ask.habeehrhadazsw3izbrbilqajalfyqqln54mrja3iwpqxgcuxnus7eid.onion',
  838. 'http://qr.vern.i2p',
  839. 'http://qr.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  840. 'http://quetre.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  841. 'http://quetre.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion',
  842. 'http://quora.cepyxplublbyw2f4axy4pyztfbxmf63lrt2c7uwv6wl4iixz53czload.onion',
  843. //'https://que.wilbvr.me',
  844. 'https://quetre.iket.me',
  845. 'https://quetre.pussthecat.org',
  846. 'https://quetre.tokhmi.xyz',
  847. 'https://quetre.projectsegfau.lt',
  848. 'https://quetre.esmailelbob.xyz',
  849. //'https://quetre.odyssey346.dev',
  850. 'https://quetre.privacydev.net',
  851. 'https://ask.habedieeh.re',
  852. 'https://quetre.marcopisco.com',
  853. 'https://quetre.blackdrgn.nl',
  854. 'https://quetre.pufe.org',
  855. 'https://quetre.lunar.icu',
  856. 'https://quora.femboy.hu',
  857. 'https://quora.vern.cc',
  858. 'https://farside.link/quetre'
  859. ], // Quetre
  860. 'rimgo' : [
  861. 'https://farside.link/rimgo',
  862. //'https://i.bcow.xyz',
  863. //'https://img.riverside.rocks',
  864. 'https://rimgo.bus-hit.me',
  865. 'https://rimgo.hostux.net',
  866. 'https://rimgo.pussthecat.org',
  867. 'https://rimgo.totaldarkness.net',
  868. 'https://rimgo.vern.cc'
  869. ], // rimgo
  870. 'ruraldictionary' : [
  871. 'http://rd.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  872. 'http://ruraldictionary.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  873. 'http://vern5cxiaufqvhv4hu5ypkvw3tiwvuinae4evdbqzrioql6s2sha.b32.i2p',
  874. 'https://isdoingyour.mom',
  875. 'https://rd.bloatcat.tk',
  876. 'https://rd.vern.cc',
  877. 'https://ruraldictionary.esmailelbob.xyz'
  878. ], // Rural Dictionary
  879. 'scribe' : [
  880. 'https://farside.link/scribe',
  881. 'https://scribe.bus-hit.me',
  882. 'https://scribe.citizen4.eu',
  883. 'https://scribe.froth.zone',
  884. 'https://scribe.nixnet.services',
  885. 'https://scribe.rip'
  886. ], // Scribe
  887. 'searx' : [
  888. 'https://dynabyte.ca',
  889. 'https://etsi.me',
  890. //'https://farside.link/searx',
  891. 'https://farside.link/searxng',
  892. //'https://monocles.de',
  893. 'https://procurx.pt',
  894. 'https://northboot.xyz',
  895. 'https://paulgo.io',
  896. 'https://recherche.facil.services',
  897. 'https://s.zhaocloud.net',
  898. 'https://search.asynchronousexchange.com',
  899. 'https://search.exarius.org',
  900. 'https://search.jpope.org',
  901. 'https://search.mdosch.de',
  902. 'https://search.neet.works',
  903. 'https://search.ononoki.org',
  904. 'https://search.rabbit-company.com',
  905. 'https://search.vojkovic.xyz',
  906. 'https://search.zzls.xyz',
  907. 'https://searx.be',
  908. 'https://searx.catfluori.de',
  909. 'https://searx.divided-by-zero.eu',
  910. 'https://searx.domain.glass',
  911. 'https://searx.dresden.network',
  912. 'https://searx.ebnar.xyz',
  913. 'https://searx.fmac.xyz',
  914. 'https://searx.foss.wtf',
  915. 'https://searx.gnu.style',
  916. //'https://searx.jaska.cc',
  917. 'https://searx.mha.fi',
  918. 'https://searx.ninja',
  919. 'https://searx.prvcy.eu',
  920. 'https://searx.rasp.fr',
  921. 'https://searx.ru',
  922. 'https://searx.sp-codes.de',
  923. 'https://searx.stuehieyr.com',
  924. 'https://searx.theanonymouse.xyz',
  925. 'https://searx.tiekoetter.com',
  926. 'https://searx.tux.land',
  927. 'https://searx.tuxcloud.net',
  928. 'https://searx.tyil.nl',
  929. 'https://searx.webheberg.info',
  930. 'https://searxng.no-logs.com',
  931. 'https://searxng.zackptg5.com',
  932. 'https://swag.pw',
  933. 'https://sx.catgirl.cloud',
  934. ], // SearXNG
  935. 'simplytranslate' : [
  936. 'https://farside.link/simplytranslate',
  937. 'https://simplytranslate.esmailelbob.xyz',
  938. 'https://simplytranslate.org',
  939. 'https://simplytranslate.pussthecat.org',
  940. //'https://st.alefvanoon.xyz',
  941. 'https://st.bloatcat.tk/',
  942. 'https://st.manerakai.com',
  943. 'https://tl.slipfox.xyz',
  944. 'https://translate.bus-hit.me',
  945. 'https://translate.josias.dev',
  946. 'https://translate.namazso.eu',
  947. 'https://translate.northboot.xyz',
  948. 'https://translate.riverside.rocks',
  949. 'https://translate.syncpundit.com',
  950. 'https://translate.tiekoetter.com'
  951. ], // SimplyTranslate
  952. 'spot' : [
  953. 'https://search.ggc-project.de',
  954. ], // Spot
  955. 'teddit' : [
  956. 'http://[200:5e4b:515c:e42b:3e73:6fbf:2f11:779d]',
  957. 'http://k62ptris7p72aborr4zoanee7xai6wguucveptwgxs5vbgt7qzpq.b32.i2p',
  958. 'http://teddit.i2p',
  959. 'http://tedditfyn6idalzso5wam5qd3kdtxoljjhbrbbx34q2xkcisvshuytad.onion',
  960. 'https://farside.link/teddit',
  961. 'https://incogsnoo.com',
  962. 'https://teddit.adminforge.de',
  963. //'https://teddit.alefvanoon.xyz',
  964. 'https://teddit.bus-hit.me',
  965. //'https://teddit.domain.glass',
  966. 'https://teddit.froth.zone',
  967. //'https://teddit.ggc-project.de',
  968. 'https://teddit.hostux.net',
  969. 'https://teddit.httpjames.space/',
  970. 'https://teddit.namazso.eu',
  971. 'https://teddit.no-logs.com',
  972. 'https://teddit.net',
  973. 'https://teddit.pussthecat.org',
  974. 'https://teddit.sethforprivacy.com',
  975. //'https://teddit.tinfoil-hat.net',
  976. 'https://teddit.totaldarkness.net',
  977. 'https://teddit.zaggy.nl'
  978. ], // teddit
  979. 'tent' : [
  980. 'https://tent.sny.sh',
  981. 'https://tent.bloatcat.tk'
  982. ], // Tent
  983. 'uso' : [
  984. 'https://userscripts-mirror.org'
  985. ], // UserScripts.org
  986. 'waybackclassic' : [
  987. 'http://waybackclassic.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion',
  988. 'https://waybackclassic.esmailelbob.xyz',
  989. 'https://wayback-classic.net'
  990. ], // Wayback Classic
  991. 'wikiless' : [
  992. 'http://wikiless.i2p',
  993. 'https://farside.link/wikiless',
  994. //'https://wiki.604kph.xyz',
  995. 'https://wiki.froth.zone',
  996. //'https://wikiless.alefvanoon.xyz',
  997. 'https://wikiless.bloatcat.tk/',
  998. //'https://wikiless.lunar.icu',
  999. 'https://wikiless.northboot.xyz',
  1000. 'https://wikiless.org',
  1001. 'https://wiki.adminforge.de',
  1002. 'https://wiki.slipfox.xyz',
  1003. 'https://wikiless.esmailelbob.xyz',
  1004. 'https://wikiless.funami.tech',
  1005. //'https://wikiless.sethforprivacy.com',
  1006. 'https://wikiless.tiekoetter.com'
  1007. ], // Wikiless
  1008. 'whoogle' : [
  1009. 'http://nuifgsnbb2mcyza74o7illtqmuaqbwu4flam3cdmsrnudwcmkqur37qd.onion',
  1010. 'http://whoglqjdkgt2an4tdepberwqz3hk7tjo4kqgdnuj77rt7nshw2xqhqad.onion',
  1011. 'http://whoogle.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion',
  1012. 'http://whoogle.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion',
  1013. 'http://verneks7rfjptpz5fpii7n7nrxilsidi2qxepeuuf66c3tsf4nhq.b32.i2p',
  1014. 'https://farside.link/whoogle',
  1015. 'https://google.owacon.moe',
  1016. 'https://gowogle.voring.me',
  1017. //'https://s.alefvanoon.xyz',
  1018. 'https://s.tokhmi.xyz',
  1019. 'https://search.albony.xyz',
  1020. 'https://search.dr460nf1r3.org',
  1021. 'https://search.foss.wtf',
  1022. 'https://search.garudalinux.org',
  1023. 'https://search.sethforprivacy.com',
  1024. 'https://wgl.frail.duckdns.org',
  1025. 'https://wg.vern.cc',
  1026. 'https://whoogle.dcs0.hu',
  1027. 'https://whoogle.esmailelbob.xyz',
  1028. 'https://whoogle.hxvy0.gq',
  1029. 'https://whoogle.lunar.icu',
  1030. 'https://whoogle.hostux.net',
  1031. 'https://whoogle.link',
  1032. 'https://whoogle.no-logs.com',
  1033. 'https://whoogle.privacydev.net'
  1034. ], // Whoogle
  1035. 'yacy' : [
  1036. 'https://51.79.164.235:8443',
  1037. 'https://58.179.103.130:49153',
  1038. 'https://76.9.226.109:8444',
  1039. 'https://78.55.177.108:8443',
  1040. 'https://85.199.74.98:8443',
  1041. 'https://93.190.202.83:8443',
  1042. 'https://109.230.224.225:8443',
  1043. 'https://162.210.6.138:8443',
  1044. 'https://176.31.104.225:8448',
  1045. //'https://185.243.10.140:8443',
  1046. 'https://farside.link/yacy',
  1047. 'https://search.yacy.net',
  1048. 'https://www.gumx.de:8091',
  1049. 'https://yacy.iko.soy'
  1050. ], // YaCy
  1051. };
  1052.  
  1053. function pageLoader() {
  1054. //window.onprogress = (event) => {
  1055. // /questions/6464592/how-to-align-entire-html-body-to-the-center
  1056. const loadPage = '<html><head><link type="image/svg+xml" rel="shortcut icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🥸</text></svg>"><title>Proxy Redirect</title><style>html,body{height:100%;}html{display:table;margin:auto;}body{display:table-cell;vertical-align:middle;}body{background-color:#f1f1f1;font-family:"Helvetica Neue", Helvetica,Arial,sans-serif;cursor:default;user-select:none;max-height:100%;max-width:100%;}div{font-size:2.3em;font-weight:bold;}#main{font-size:2em;color:#F83600;text-transform:uppercase;position:relative;text-align:center;}#loader{font-style:italic;animation:flickerAnimation 1s infinite;}.centerm{display:block;margin-left:auto;margin-right:auto;width:100%;}.center{padding:1em 0px 1em 0px;text-align:center;}@keyframes flickerAnimation{0%{opacity:1;}50%{opacity:0;}100%{opacity:1;}}.flip{display:inline-block;transform:scaleX(-1);-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);filter:FlipH;-ms-filter:FlipH;}</style></head><body><div id="message" class="center"></div><div id="loader" class="center">🔀 Redirecting...</div></body></html>';
  1057. //const loadPage = '<html><head><link type="image/svg+xml" rel="shortcut icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🥸</text></svg>"><title>Proxy Redirect</title><style>html,body{height:100%;}html{display:table;margin:auto;}body{display:table-cell;vertical-align:middle;}body{background-color:#f1f1f1;font-family:"Helvetica Neue", Helvetica,Arial,sans-serif;cursor:default;user-select:none;max-height:100%;max-width:100%;}div{font-size:2.3em;font-weight:bold;}#icon-tc:before{content:"🔀";font-size:4em;display:flow-root;text-align:center;}#icon-tc{font-size:3em;}#main{font-size:2em;color:#F83600;text-transform:uppercase;position:relative;text-align:center;}#loader{font-style:italic;animation:flickerAnimation 1s infinite;}.centerm{display:block;margin-left:auto;margin-right:auto;width:100%;}.center{padding:1em 0px 1em 0px;text-align:center;}@keyframes flickerAnimation{0%{opacity:1;}50%{opacity:0;}100%{opacity:1;}}.flip{display:inline-block;transform:scaleX(-1);-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);filter:FlipH;-ms-filter:FlipH;}</style></head><body><div id="icon-tc"></div><div id="message" class="center"></div><div id="loader" class="center">Redirecting...</div></body></html>';
  1058. //const loadPage = '<html><head><link type="image/svg+xml" rel="shortcut icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🥸</text></svg>"><title>Proxy Redirect</title><meta http-equiv="content-type" content="text/html;charset=utf-8" /><meta name="generator" content="Clear Cinema Player" /><style>body {background-color:#efefef;font-family:"Helvetica Neue", Helvetica,Arial,sans-serif; cursor: default; user-select: none;max-height:100%;max-width:100%;}div{font-size:2.3em;font-weight:bold;}#icon-tc:before{content:"🔀";font-size:4em;display:flow-root;text-align:center;}#icon-tc{font-size:3em;}#main{font-size:2em;color:#F83600;text-transform:uppercase;position:relative;text-align:center;}#loader{font-style: italic;animation:flickerAnimation 1s infinite;} #wait, #reload, #footer {font-size:14px;font-weight:normal;} #wait {font-style: italic;} .centerm {display:block;margin-left:auto;margin-right:auto;width:100%;}.center{padding:1em 0px 1em 0px;text-align:center;/* border: 3px solid green; */}@keyframes flickerAnimation {0%{opacity:1;}50%{opacity:0;}100% {opacity:1;}}.flip {display: inline-block; transform: scaleX(-1); -moz-transform: scaleX(-1); -o-transform: scaleX(-1); -webkit-transform: scaleX(-1); filter: FlipH; -ms-filter: FlipH;}</style></head><body><div id="intro" class="center">Proxy Redirect</div><div id="icon-tc" onclick="(function(){document.location = document.location})();"></div><div id="loader" class="center">Redirecting...</div><div id="wait" class="center">Please wait while our monkeys find a working proxy</div><div id="reload" class="center" onclick="(function(){document.location = document.location})();"></div><div id="footer" class="center">Made with <a href="https://falkon.org/">Falkon</a> web browser (<a href="https://openuserjs.org/scripts/sjehuda/Proxy_Redirect/issues">Report issue</a>)</div></body></html>';
  1059. const domParser = new DOMParser();
  1060. const newDocument = domParser.parseFromString(loadPage, 'text/html');
  1061. //newDocument.querySelector('#icon-tc').onclick = () => {disable()}; // FIXME
  1062. //newDocument.querySelector('#icon-tc').addEventListener("click", disable, false);
  1063. const insertDocument = document.importNode(newDocument.documentElement, true);
  1064. const removeDocument = document.documentElement;
  1065. document.replaceChild(insertDocument, removeDocument);
  1066. setTimeout(message, 9000); // FIXME
  1067. }
  1068.  
  1069. function message() {
  1070. var div = document.querySelector('#message');
  1071. if (div) {
  1072. div.innerHTML = `🔀 Continue to ${modURL.hostname}`;
  1073. div.onclick = () => {location.href = modURL};
  1074. document.querySelector('#loader').remove();
  1075. } else {
  1076. location.href = 'https://openuserjs.org/scripts/sjehuda/Proxy_Redirect?autoredirect'
  1077. }
  1078. }
  1079.  
  1080. function noRespond() {
  1081. var div = document.querySelector('#message');
  1082. div.id = 'message-error'
  1083. div.innerHTML = 'Proxy list appears to be out of date. Continue to ' + location.host + ' or...';
  1084. div.onclick = () => {location.href = location.href + '#noredirect'; location.reload()};
  1085. var div = document.querySelector('#loader');
  1086. div.innerHTML = '🥸 Update Proxy Redirect';
  1087. div.onclick = () => {location.href = 'https://openuserjs.org/scripts/sjehuda/Proxy_Redirect'};
  1088. }
  1089.  
  1090. // FIXME
  1091. // /questions/1397329/how-to-remove-the-hash-from-window-location-url-with-javascript-without-page-r
  1092. function disable() {
  1093. window.location.href =
  1094. window.location.href.substr(
  1095. 0,
  1096. window.location.href.indexOf('#'))
  1097. + '#noredirect';
  1098. }
  1099.  
  1100. /*
  1101. loop = setInterval(function() {
  1102. //modifyURL(location.href);
  1103. window.open(newURL,'_self');
  1104. //location.href = newURL;
  1105. console.info('Redirecting to ' + newURL);
  1106. clearInterval(loop);
  1107. }, 1000);
  1108. */
  1109.  
  1110. /*
  1111. function modifyURL() {
  1112. inst = pickURL();
  1113. // make function synchronous
  1114. // /questions/8778267/synchronous-gm-xmlhttprequest-acting-asynchronously
  1115. stat = statRES(inst);
  1116. if (stat.match(200)) {
  1117. newURL = settURL();
  1118. } else {
  1119. pickURL(url);
  1120. }
  1121. return newURL;
  1122. }
  1123. */
  1124.  
  1125. // var caller = (function xhr() {
  1126. var init = (function xhr() {
  1127. instance = pickURL();
  1128. try {
  1129. gmXmlhttpRequest({
  1130. method: 'GET',
  1131. url: instance,
  1132. synchronous: true,
  1133. onprogress: pageLoader(),
  1134. onload: function(response) {
  1135. if (response.finalUrl.startsWith(instance)) {
  1136. location.href = settURL();
  1137. } else {
  1138. instance = instance.slice(instance.lastIndexOf('/')+1);
  1139. instance = instance.replace(/\./g,'-');
  1140. console.warn('Instance URL ' + instance + ' might be out of service. URL has changed. Please report this to the developer.');
  1141. if (maxAttempts()) {
  1142. noRespond()
  1143. return;
  1144. }
  1145. maxAttempts()
  1146. xhr();
  1147. }
  1148. },
  1149. onerror: function(response) {
  1150. instance = instance.slice(instance.lastIndexOf('/')+1);
  1151. instance = instance.replace(/\./g,'-');
  1152. console.warn('Instance URL ' + instance + ' might be offline. Status error: ' + response.status + '. Please report this to the developer.');
  1153. if (maxAttempts()) {
  1154. noRespond()
  1155. return;
  1156. }
  1157. maxAttempts()
  1158. xhr();
  1159. }
  1160. });
  1161. } catch (err) {
  1162. console.warn(err)
  1163. console.info('Please contribute C++ to Greasemonkey for Falkon https://bugs.kde.org/show_bug.cgi?id=466533')
  1164. //pickURL();
  1165. farside = true;
  1166. location.href = settURL();
  1167. }
  1168.  
  1169. })();
  1170.  
  1171. function maxAttempts() {
  1172. attemptCounter = attemptCounter + 1;
  1173. if (attemptCounter == urlArray.length) { return true; }
  1174. }
  1175.  
  1176. function setValue(para) {
  1177. if (partedURL.searchParams.get(para)) {
  1178. para = [para];
  1179. return pickParameters(para);
  1180. } else {
  1181. return 'auto';
  1182. }
  1183. }
  1184.  
  1185. function pickParameters(para) {
  1186. for (let i = 0; i < para.length; i++) {
  1187. if (partedURL.searchParams.get(para[i])) {
  1188. para = partedURL.searchParams.get(para[i]);
  1189. partedURL.searchParams.delete(para[i]);
  1190. return para;
  1191. }
  1192. }
  1193. }
  1194.  
  1195. function pickURL() {
  1196.  
  1197. partedURL = new URL(location.href);
  1198.  
  1199. paras = ['continue', 'retpath']
  1200. for (let i = 0; i < paras.length; i++) {
  1201. if (partedURL.searchParams.get(paras[i])) {
  1202. //partedURL = pickParameters(paras[i]);
  1203. partedURL = partedURL.searchParams.get(paras[i]);
  1204. partedURL = new URL(partedURL);
  1205. }
  1206. }
  1207.  
  1208. hostname = partedURL.hostname;
  1209. pathname = partedURL.pathname;
  1210.  
  1211. switch (true) {
  1212.  
  1213. case hostname.endsWith('bandcamp.com'):
  1214. urlArray = proxy.tent;
  1215. break;
  1216.  
  1217. case hostname.endsWith('bilibili.com'):
  1218. urlArray = proxy.mikuinvidious;
  1219. break;
  1220.  
  1221. case hostname.endsWith('bt4g.org'):
  1222. case hostname.endsWith('torrentdownload.info'):
  1223. case hostname.endsWith('torrentz.eu'):
  1224. case hostname.endsWith('torrentz.me'):
  1225. case hostname.endsWith('torrentz2.is'):
  1226. urlArray = proxy.btdigg;
  1227. break;
  1228.  
  1229. case hostname.endsWith('fandom.com'):
  1230. urlArray = proxy.breezewiki;
  1231. break;
  1232.  
  1233. case hostname.endsWith('github.com'):
  1234. urlArray = proxy.gothub;
  1235. break;
  1236.  
  1237. case hostname.endsWith('gitlab.com'):
  1238. urlArray = proxy.laboratory;
  1239. break;
  1240.  
  1241. case hostname.endsWith('goodreads.com'):
  1242. urlArray = proxy.biblioreads;
  1243. break;
  1244.  
  1245. // TODO quadkey (mapquest)
  1246. // NOTE quadkeyToTile(quadkey) See /mapbox/tilebelt
  1247. case hostname.endsWith('wikimap.toolforge.org'):
  1248. case (hostname.endsWith('moovitapp.com') &&
  1249. partedURL.search.includes('tll')):
  1250. case (hostname.endsWith('bing.com') &&
  1251. pathname.startsWith('/maps')):
  1252. case (hostname.includes('google.') &&
  1253. pathname.startsWith('/maps')):
  1254. case (hostname.includes('waze.com') &&
  1255. pathname.startsWith('/live-map')):
  1256. case (hostname.includes('waze.com') &&
  1257. pathname.startsWith('/ul')):
  1258. case (hostname.includes('yandex.') &&
  1259. pathname.startsWith('/maps')):
  1260. urlArray = proxy.map;
  1261. break;
  1262.  
  1263. case hostname.endsWith('imdb.com'):
  1264. urlArray = proxy.libremdb;
  1265. break;
  1266.  
  1267. case hostname.endsWith('imgur.com'):
  1268. //proxyArray = [proxy.imgin, proxy.rimgo];
  1269. proxyArray = [proxy.rimgo];
  1270. break;
  1271. /*
  1272. case hostname.endsWith('instagram.com'):
  1273. urlArray = proxy.bibliogram;
  1274. break;
  1275. */
  1276. case hostname.endsWith('medium.com'):
  1277. proxyArray = [proxy.libmedium, proxy.scribe];
  1278. break;
  1279.  
  1280. case hostname.endsWith('odysee.com'):
  1281. urlArray = proxy.librarian;
  1282. break;
  1283.  
  1284. case hostname.endsWith('quora.com'):
  1285. urlArray = proxy.quetre;
  1286. break;
  1287.  
  1288. case hostname.endsWith('reddit.com'):
  1289. proxyArray = [proxy.libreddit, proxy.teddit];
  1290. break;
  1291.  
  1292. case hostname.endsWith('reuters.com'):
  1293. urlArray = proxy.neuters;
  1294. break;
  1295.  
  1296. // FIXME
  1297. case (hostname.startsWith('search.yahoo.')):
  1298. case (pathname.startsWith('/search')):
  1299. case (hostname.includes('yandex.') &&
  1300. pathname.startsWith('/search')):
  1301. case (hostname.includes('yahoo.') &&
  1302. pathname.startsWith('/search')):
  1303. case (hostname.includes('bing.') &&
  1304. pathname.startsWith('/search')):
  1305. case (hostname.includes('google.') &&
  1306. pathname.startsWith('/search')):
  1307. proxyArray = [proxy.librex, proxy.lieu,
  1308. proxy.searx, proxy.spot,
  1309. proxy.whoogle
  1310. ];
  1311. break;
  1312.  
  1313. case hostname.endsWith('stackoverflow.com'):
  1314. urlArray = proxy.anonymousoverflow;
  1315. break;
  1316.  
  1317. case hostname.endsWith('tiktok.com'):
  1318. urlArray = proxy.proxitok;
  1319. break;
  1320.  
  1321. case (hostname.endsWith('translate.yandex.com')):
  1322. // FIXME website blocks us from redirecting
  1323. // function setTimeout() seems to not work
  1324. // consider different approach/way
  1325. case (hostname.endsWith('translate.google.com')):
  1326. proxyArray = [proxy.lingva, proxy.simplytranslate];
  1327. break;
  1328.  
  1329. case hostname.endsWith('twitter.com'):
  1330. urlArray = proxy.nitter;
  1331. break;
  1332.  
  1333. case hostname.endsWith('urbandictionary.com'):
  1334. urlArray = proxy.ruraldictionary;
  1335. break;
  1336.  
  1337. case hostname.endsWith('userscripts.org'):
  1338. urlArray = proxy.uso;
  1339. break;
  1340.  
  1341. case hostname.endsWith('wikipedia.org'):
  1342. urlArray = proxy.wikiless;
  1343. break;
  1344.  
  1345. case hostname.endsWith('youtu.be'):
  1346. case hostname.endsWith('youtube.com'):
  1347. case hostname.endsWith('youtube-nocookie.com'):
  1348. case hostname.endsWith('invidious-invidious.invidious.svc.cluster.local:3000'):
  1349. proxyArray = [proxy.cloudtube, proxy.invidious,
  1350. proxy.piped, proxy.pipedmaterial,
  1351. proxy.poketube
  1352. ];
  1353. break;
  1354.  
  1355. //default:
  1356. // return target;
  1357.  
  1358. }
  1359.  
  1360. // proxy select
  1361. if (proxyArray) {
  1362. urlArray = proxyArray[Math.floor(Math.random()*proxyArray.length)];
  1363. }
  1364.  
  1365. // instance select
  1366. return urlArray[Math.floor(Math.random()*urlArray.length)];
  1367.  
  1368. }
  1369.  
  1370. // Settlement
  1371. function settURL() {
  1372. let newPath;
  1373. switch (urlArray) {
  1374.  
  1375. // consider function setTimeout()
  1376. case proxy.bibliogram:
  1377. if (!pathname.includes('accounts/login')) {
  1378. newPath = `/u/${para}`;
  1379. } else {
  1380. if (partedURL.searchParams.get('next')) {
  1381. para = ['next'];
  1382. para = pickParameters(para);
  1383. newPath = `/u/${para}`;
  1384. }
  1385. }
  1386. break;
  1387.  
  1388. case proxy.breezewiki:
  1389. // extract wiki name
  1390. partedHost = hostname.split('.');
  1391. if (partedHost.length === 3 || partedHost.length === 4) {
  1392. brand = partedHost[0];
  1393. }
  1394. newPath = `/${brand}${pathname}`;
  1395. break;
  1396.  
  1397. case proxy.btdigg:
  1398. // extract sha1sum
  1399. //hash = pathname.split('/')[2];
  1400. hash = pathname.split('/');
  1401. for (let i = 0; i < hash.length; i++) {
  1402. if (hash[i].length === 40) {
  1403. hash = hash[i];
  1404. break;
  1405. }
  1406. }
  1407. newPath = `/${hash}`;
  1408. break;
  1409.  
  1410. case proxy.cloudtube:
  1411. case proxy.invidious:
  1412. case proxy.piped:
  1413. case proxy.pipedmaterial:
  1414. case proxy.poketube:
  1415. if (partedURL.searchParams.get('v')) {
  1416. para = ['v'];
  1417. para = pickParameters(para);
  1418. newPath = `/watch?v=${para}`;
  1419. }
  1420. break;
  1421.  
  1422. case proxy.gothub:
  1423. if (hostname.endsWith('gist.github.com')) {
  1424. newPath = `/gist${pathname}`;
  1425. }
  1426. break;
  1427.  
  1428. case proxy.laboratory:
  1429. newPath = '/' + hostname + pathname;
  1430. break;
  1431.  
  1432. case proxy.libmedium:
  1433. partedHost = hostname.split('.');
  1434. if (partedHost.length === 3 || partedHost.length === 4) {
  1435. name = partedHost[0];
  1436. }
  1437. newPath = `/@${name}${pathname}`;
  1438. break;
  1439.  
  1440. case proxy.librex:
  1441. // extract search parameter
  1442. para = ['q','text','p'];
  1443. para = pickParameters(para);
  1444. newPath = `/search.php?q=${para}`;
  1445. break;
  1446.  
  1447. case proxy.lingva:
  1448. // extract text parameter
  1449. paras = ['sl','tl','text'];
  1450.  
  1451. for (let i = 0; i < paras.length; i++) {
  1452. paras[i] = setValue(paras[i]);
  1453. }
  1454.  
  1455. //if (paras[2] === 'auto') { paras[2] = ''; }
  1456. if ((paras[0] == 'auto') && (paras[1] == 'auto')) {
  1457. newPath = `/${paras[2]}`;
  1458. } else {
  1459. newPath = `/${paras[0]}/${paras[1]}/${paras[2]}`;
  1460. }
  1461. break;
  1462.  
  1463. case proxy.map:
  1464. // extract coordinations
  1465. /*
  1466. if (pathname.includes('@')) {
  1467. cord = pathname.split('/')[2].split('&')[0].slice(1);
  1468. cord = cord.split(',');
  1469. }
  1470. newPath = '/#map=' + cord[2].slice(0, 1) +
  1471. '/' + cord[0] + '/' + cord[1];
  1472. */
  1473. let lat, lon, zoom;
  1474. // extract coordinations
  1475. if (partedURL.search.includes('%7E')) { // %7E is ~
  1476. para = ['cp'];
  1477. cord = pickParameters(para);
  1478. cord = cord.split('~');
  1479. para = ['lvl'];
  1480. zoom = pickParameters(para);
  1481. lat = cord[0];
  1482. lon = cord[1];
  1483. } else
  1484. if (partedURL.search.includes('to')) {
  1485. para = ['to'];
  1486. cord = pickParameters(para);
  1487. cord = cord.slice(3).split(',');
  1488. lat = cord[0];
  1489. lon = cord[1];
  1490. } else
  1491. if (pathname.includes('ul') &&
  1492. partedURL.search.includes('ll')) {
  1493. para = ['ll'];
  1494. cord = pickParameters(para);
  1495. cord = cord.split(',');
  1496. para = ['zoom'];
  1497. zoom = pickParameters(para);
  1498. lat = cord[0];
  1499. lon = cord[1];
  1500. } else
  1501. if (partedURL.search.includes('ll')) {
  1502. para = ['ll'];
  1503. cord = pickParameters(para);
  1504. cord = cord.split(',');
  1505. para = ['z'];
  1506. zoom = pickParameters(para);
  1507. lat = cord[0];
  1508. lon = cord[1];
  1509. } else
  1510. if (partedURL.search.includes('tll')) {
  1511. para = ['tll'];
  1512. cord = pickParameters(para);
  1513. cord = cord.split('_');
  1514. lat = cord[0];
  1515. lon = cord[1];
  1516. } else
  1517. if (pathname.includes('@')) {
  1518. partedPath = pathname.split('/')
  1519. for (let i = 0; i < partedPath.length; i++) {
  1520. if (partedPath[i].startsWith('@')) {
  1521. cord = partedPath[i].split(',');
  1522. }
  1523. }
  1524. lat = cord[0].slice(1);
  1525. lon = cord[1];
  1526. zoom = cord[2];
  1527. //newPath = `/#map=${cord[2].slice(0, 2)}/${cord[0].slice(1)}/${cord[1]}`;
  1528. //newPath = `/#map=${cord[2]}/${cord[0].slice(1)}/${cord[1]}`;
  1529. //newPath = `/#${cord[2]}/${cord[0].slice(1)}/${cord[1]}/`;
  1530. }
  1531.  
  1532. if (lat && lon && zoom) {
  1533. newPath = `/#${zoom}/${lat}/${lon}/`;
  1534. } else
  1535. if (lat && lon && !zoom) {
  1536. newPath = `/#10/${lat}/${lon}/`;
  1537. }
  1538.  
  1539. if (!newPath && partedURL.searchParams.get('q')) {
  1540. para = ['q'];
  1541. para = pickParameters(para);
  1542. newPath = `/search?query=${para}`;
  1543. instance = 'https://www.openstreetmap.org';
  1544. }
  1545. break;
  1546.  
  1547. case proxy.lieu:
  1548. case proxy.searx:
  1549. case proxy.whoogle:
  1550. // extract search parameter
  1551. para = ['q','text','p'];
  1552. para = pickParameters(para);
  1553. newPath = `/search?q=${para}`;
  1554. break;
  1555.  
  1556. case proxy.mikuinvidious:
  1557. if (!hostname.startsWith('www.')) {
  1558. partedHost = hostname.split('.');
  1559. if (partedHost.length === 3 || partedHost.length === 4) {
  1560. name = partedHost[0];
  1561. }
  1562. newPath = `/${name}${pathname}`;
  1563. }
  1564. break;
  1565.  
  1566. case proxy.tent:
  1567. partedHost = hostname.split('.');
  1568. if (partedHost.length === 3 || partedHost.length === 4) {
  1569. artist = partedHost[0];
  1570. }
  1571. partedPath = pathname.split('/');
  1572. type = partedPath[1];
  1573. name = partedPath[2];
  1574. if (name) {
  1575. newPath = `/release.php?artist=${artist}&type=${type}&name=${name}`;
  1576. } else {
  1577. newPath = `/release.php?artist=${artist}&type=${type}`;
  1578. }
  1579. break;
  1580.  
  1581. case proxy.wikiless:
  1582. // extract language code
  1583. partedHost = hostname.split('.');
  1584. if (partedHost.length === 3 || partedHost.length === 4) {
  1585. lang = partedHost[0];
  1586. }
  1587. newPath = `${pathname}?lang=${lang}`;
  1588. break;
  1589.  
  1590. case proxy.yacy:
  1591. // extract search parameter
  1592. para = ['q','text','p'];
  1593. //pickParameters(paras); // works even when just calling the function?
  1594. para = pickParameters(para);
  1595. newPath = `/yacysearch.html?query=${para}`;
  1596. break;
  1597.  
  1598. }
  1599.  
  1600. if (!newPath || newPath == '/') {
  1601. newPath = pathname + partedURL.search + partedURL.hash;
  1602. }
  1603.  
  1604. if (farside) {
  1605. if (urlArray.filter(str => str.includes('farside.link')).length) {
  1606. instance = urlArray.filter(str => str.includes('farside.link'))[0];
  1607. }
  1608. }
  1609.  
  1610. modURL = new URL(instance + newPath);
  1611. return modURL;
  1612.  
  1613. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址