Skip to content

Commit

Permalink
feat: crack Slader limit
Browse files Browse the repository at this point in the history
  • Loading branch information
FawenYo committed Jan 11, 2021
1 parent 77e56f2 commit caa0539
Show file tree
Hide file tree
Showing 8 changed files with 105 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# VSCode related files
.vscode/

# MacOS related files
**/.DS_Store
20 changes: 19 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,19 @@
# slader-crack
# slader-crack

The repo aims to crack Slader's 5 solutions limit.

## Tutorial

1. Go to [Release page](https://github.com/FawenYo/slader-crack/releases) and download the latest release.
2. Extract the zip file.
3. Go to [Chrome Extension page](chrome://extensions/) and switch on the developmer mode at the top-right.
4. Click "Load unpacked" at the top-left and choose the extracted folder.
5. All things done! Just go surfing on the Slader :+1:

## Technical Detail

### Explain

* scripts/crack.js: Bypass Slader limit by replace X-Forwarded-For value in onBeforeSendHeaders status.
![ChromeWebRequest](https://i.imgur.com/GSIynKj.png)
* scripts/footer.js: Remove payment info footer on the page.
Binary file added slader-crack/images/icon128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added slader-crack/images/icon16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added slader-crack/images/icon48.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 27 additions & 0 deletions slader-crack/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"name": "SladerCrack",
"version": "0.1",
"author": "FawenYo",
"description": "crack slader limit",
"permissions": [
"webRequest",
"webRequestBlocking",
"*://*.slader.com/*"
],
"background": {
"scripts": [
"scripts/crack.js"
],
"persistent": true
},
"content_scripts": [{
"matches": ["*://*.slader.com/textbook/*"],
"js": ["scripts/footer.js"]
}],
"icons": {
"16": "images/icon16.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
},
"manifest_version": 2
}
31 changes: 31 additions & 0 deletions slader-crack/scripts/crack.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
chrome.webRequest.onBeforeSendHeaders.addListener(
function (details) {
var new_x_forwarded = Math.floor(Math.random() * 100000000).toString()
var got_x_forwarded = false
for (var request_headers_name in details.requestHeaders) {
// Find X-Forwarded-For
got_x_forwarded = details.requestHeaders[request_headers_name].name.toLowerCase() == "x-forwarded-for"
if (got_x_forwarded) {
// Replace wih new value
details.requestHeaders[request_headers_name].value = new_x_forwarded
break
}
}
if (!got_x_forwarded) {
details.requestHeaders.push({ name: "X-Forwarded-For", value: new_x_forwarded })
}
return { requestHeaders: details.requestHeaders }
},
{
urls: ["*://*.slader.com/*"],
},
["blocking", "requestHeaders"]
)

chrome.webRequest.onSendHeaders.addListener(
function (details) {
return { requestHeaders: details.requestHeaders }
},
{ urls: ["*://*.slader.com/textbook/*"] },
["requestHeaders"]
)
23 changes: 23 additions & 0 deletions slader-crack/scripts/footer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
var element_removed = false
var element_parent = document.body

var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
if (mutation.addedNodes && mutation.addedNodes.length > 0) {
var node1 = mutation.target.querySelector("section.Paywall__footer-counter")
if (node1) {
node1.parentNode.removeChild(node1)
element_removed = true
}

if (element_removed) {
observer.disconnect()
}
}
})
})

observer.observe(element_parent, {
childList: true,
subtree: true,
})

0 comments on commit caa0539

Please sign in to comment.