This commit is contained in:
Tim Speckhals 2018-10-06 12:02:43 +02:00
parent 5e443be5eb
commit 9357205b57
No known key found for this signature in database
GPG Key ID: A62ADB92F7ADEEB6
5 changed files with 61 additions and 29 deletions

7
PRIVACY.md Normal file
View File

@ -0,0 +1,7 @@
# Privacy Policy
Some bypasses will need to send a request to our servers to work.
If a request is sent, it will be stored in correlation with your IP address for up to 6 months in Germany. This information is also shared with Cloudflare [US].
Some features which need requests to work can be disable in the extension options.

View File

@ -14,12 +14,37 @@ chrome.webRequest.onBeforeRequest.addListener(details=>{
if(details.method=="GET"&&details.type=="main_frame")
return{redirectUrl:decodeURIComponent(details.url.substr(details.url.indexOf("link=")+5))}
},{urls:["*://*.spaste.com/r/*link=*"]},["blocking"])
chrome.webRequest.onBeforeRequest.addListener(details=>{
if(details.method=="GET"&&details.type=="main_frame")
return{redirectUrl:decodeURIComponent(details.url.substr(details.url.indexOf("/12/1/")+6))}
},{urls:["*://*.sh.st/r/*/12/1/*"]},["blocking"])
//Cheap trick
//Get AdLinkFly links info even when Access-Control-Allow-Origin is not present because the content script can't
chrome.webRequest.onHeadersReceived.addListener(details=>{
let xhr=new XMLHttpRequest(),t=""
xhr.onreadystatechange=()=>{
if(xhr.readyState==4&&xhr.status==200)
{
let match=/<img src="\/\/api\.miniature\.io\/[a-zA-Z0-9?=&%."]+\n?.+>/.exec(xhr.responseText)
if(match)
{
let url=new URL(new DOMParser().parseFromString("<!DOCTYPE html><html><body>"+match[0].split("\r").join("").split("\n").join(" ")+"</body></html>","text/html").querySelector("img").src)
if(url.search&&url.search.indexOf("url="))
t=decodeURIComponent(url.search.split("url=")[1].split("&")[0])
}
else t="crowd"
}
}
xhr.open("GET",(details.url.substr(44)+"/info").replace("//","/"),false)
xhr.send()
return{responseHeaders:[{name:"X-Target",value:t},{name:"Access-Control-Allow-Origin",value:"*"},{name:"Access-Control-Expose-Headers",value:"X-Target"}]}
},{urls:["https://universal-bypass.org/adlinkfly-info?*"]},["blocking"])
//Intercept and redirect to chrome extension url because the content script can't
chrome.webRequest.onBeforeRequest.addListener(details=>{
if(details.method=="GET"&&details.type=="main_frame")
return{redirectUrl:chrome.runtime.getURL("html/crowd-bypassed.html")+details.url.substr(43)}
},{urls:["https://universal-bypass.org/crowd/bypassed?*"]},["blocking"])
},{urls:["https://universal-bypass.org/crowd-bypassed?*"]},["blocking"])
//Disableable Tracker Bypass using api.hell.sh. Privacy Policy: https://hell.sh/privacy
var trackerBypassEnabled=true,blockIPLoggers=true,resolveDestination=url=>{

View File

@ -62,7 +62,7 @@ if(document instanceof HTMLDocument)
let xhr=new XMLHttpRequest()
xhr.onreadystatechange=()=>{
if(xhr.readyState==4&&xhr.status==200&&xhr.responseText!="")
location.href="https://universal-bypass.org/crowd/bypassed?target="+encodeURIComponent(xhr.responseText)+"&back="+encodeURIComponent(location.href)
location.href="https://universal-bypass.org/crowd-bypassed?target="+encodeURIComponent(xhr.responseText)+"&back="+encodeURIComponent(location.href)//The background script will intercept the request and redirect to html/crowd-bypassed.html because we can't redirect to extension urls in this scope.
else if(document.querySelector("body[data-crowd-bypass-opt-in]")||!document.querySelector("body[data-crowd-bypass-opt-out]"))
callback()
}
@ -71,6 +71,8 @@ if(document instanceof HTMLDocument)
xhr.send("domain="+encodeURIComponent(domain)+"&path="+encodeURIComponent(location.pathname.toString().substr(1)))
}),
contributeAndNavigate=target=>{
if(target.substr(target.length-18)=="#ignoreCrowdBypass")
target=target.substr(0,target.length-18)
let xhr=new XMLHttpRequest()
xhr.onreadystatechange=()=>{
if(xhr.readyState==4)
@ -496,6 +498,9 @@ if(document instanceof HTMLDocument)
if(b)
safelyNavigate(b.href)
})
domainBypass("oke.io",()=>{
window.setInterval=f=>sI(f,1)
})
domainBypass("rom.io",()=>crowdBypass(()=>{
let cT=setInterval(()=>{
let a=document.querySelector("a.final-button[href]")
@ -542,32 +547,27 @@ if(document instanceof HTMLDocument)
//AdLinkFly
let xhr=new XMLHttpRequest()
xhr.onreadystatechange=()=>{
if(xhr.readyState==4&&xhr.status==200)
if(xhr.readyState==4)
{
let match=/<img src="\/\/api\.miniature\.io\/[a-zA-Z0-9?=&%."]+\n?.+>/.exec(xhr.responseText)
if(match)
{
let url=new URL(new DOMParser().parseFromString("<!DOCTYPE html><html><body>"+match[0].split("\r").join("").split("\n").join(" ")+"</body></html>","text/html").querySelector("img").src)
console.log(url)
if(url.search&&url.search.indexOf("url="))
safelyNavigate(decodeURIComponent(url.search.split("url=")[1].split("&")[0]))
}
else crowdBypass(()=>{
let cT=setInterval(()=>{
let a=document.querySelector("a.get-link[href]")
if(!a)
a=document.querySelector(".skip-ad a[href]")
if(a&&isGoodLink(a.href))
{
clearInterval(cT)
a.parentNode.removeChild(a)
contributeAndNavigate(a.href)
}
},50)
})
let t=xhr.getResponseHeader("X-Target")
if(t=="crowd")
crowdBypass(()=>{
let cT=setInterval(()=>{
let a=document.querySelector("a.get-link[href]")
if(!a)
a=document.querySelector(".skip-ad a[href]")
if(a&&isGoodLink(a.href))
{
clearInterval(cT)
a.parentNode.removeChild(a)
contributeAndNavigate(a.href)
}
},50)
})
else safelyNavigate(t)
}
}
xhr.open("GET",(location.pathname+"/info").replace("//","/"),true)
xhr.open("GET",("https://universal-bypass.org/adlinkfly-info?"+location.href),true)//The background script will intercept the request and return the information we need using headers
xhr.send()
return
}

View File

@ -11,9 +11,9 @@
<h1 data-message="options"></h1>
<br>
<p>
<input type="checkbox" id="option-tracker-bypass"> <label for="option-tracker-bypass"><span data-message="optionsTrackerBypass"></span> (Bit.ly, Goo.gl, T.co, ...)</label> (<a href="https://hellsh.com/privacy#requests-and-cookies" target="_blank" data-message="privacyPolicy"></a>)<br>
<input type="checkbox" id="option-tracker-bypass"> <label for="option-tracker-bypass"><span data-message="optionsTrackerBypass"></span> (Bit.ly, Goo.gl, T.co, ...)</label> (<a href="https://github.com/hell-sh/Universal-Bypass/blob/master/PRIVACY.md" target="_blank" data-message="privacyPolicy"></a>)<br>
<input type="checkbox" id="option-block-ip-loggers"> <label for="option-block-ip-loggers" data-message="optionsBlockIPLoggers"></label><br>
<input type="checkbox" id="option-crowd-bypass"> <label for="option-crowd-bypass" data-message="optionsCrowdBypass"></label> (<a href="https://universal-bypass.org/" target="_blank" data-message="moreInfo"></a>) (<a href="https://hellsh.com/privacy" target="_blank" data-message="privacyPolicy"></a>)
<input type="checkbox" id="option-crowd-bypass"> <label for="option-crowd-bypass" data-message="optionsCrowdBypass"></label> (<a href="https://universal-bypass.org/" target="_blank" data-message="moreInfo"></a>) (<a href="https://github.com/hell-sh/Universal-Bypass/blob/master/PRIVACY.md" target="_blank" data-message="privacyPolicy"></a>)
</p>
<h2 data-message="optionsUserscripts"></h2>
<a name="userscripts"></a>

View File

@ -10,7 +10,7 @@
"name": "Universal Bypass",
"description": "__MSG_appDesc__",
"homepage_url": "https://universal-bypass.org/",
"version": "6.1.5",
"version": "6.2",
"author": "timmyRS",
"minimum_chrome_version": "41",
"options_ui": {