Skip to content
This repository was archived by the owner on Jul 2, 2021. It is now read-only.

Commit 7e4fdc6

Browse files
Update LiveChat support (Closes #2)
1 parent d783085 commit 7e4fdc6

File tree

6 files changed

+24
-10
lines changed

6 files changed

+24
-10
lines changed

README.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
# TypeCheat
2+
23
A JS script to cheat on certain online typing tests.
34

45
## Supported sites
6+
57
As of now, the sites that work are:
8+
69
- [10FastFingers](https://10fastfingers.com/) (Normal tests and [custom text](https://10fastfingers.com/text-practice/new))
710
- [TypeRacer](https://play.typeracer.com/)
811
- [TypingTestNow](https://typingtestnow.com/)
@@ -12,24 +15,32 @@ As of now, the sites that work are:
1215
- [AOEU Typing Speed Test](https://typing-speed-test.aoeu.eu/)
1316
- [India Typing](http://indiatyping.com/index.php/typing-test/english-typing-test)
1417

15-
I am planning to add support for more.
18+
I am planning to add support for more.
1619

1720
## Anticheat systems
21+
1822
### 10FastFingers
23+
1924
If you go above a certain WPM (not sure exactly what), you will be forced to take an anticheat test to confirm your result. The timer starts as soon as you press the "Start" button, and is a randomly generated image instead of a normal text-based system.
2025
**If you use TypeCheat too much/at all on 10FastFingers, you will get banned from the site. I recommend using an alternate account for this, as if it's banned you can just delete and re-create it.**
2126

2227
### TypeRacer
28+
2329
If you go moderately fast (>100 wpm), you will get a message asking you to do a test to confirm your score.
2430
If you go too fast, an alert box will appear saying that they believe you have cheated.
2531

2632
## Test UI Problems
33+
2734
### QuickTypingTest
35+
2836
On QuickTypingTest the prompt text doesn't update when holding space until you let go, but it is updating in the background will still work and count towards your WPM. Letting go of space will cause the UI to jump to the current word.
2937

3038
## Use
39+
3140
### Bookmarks bar
41+
3242
#### Copy-paste into bookmark
43+
3344
1. Copy the contents of [`typecheat.min.js`](https://raw.githubusercontent.com/hackermancool/TypeCheat/master/typecheat.min.js)
3445
2. Go to any website that you have not bookmarked
3546
3. Press the bookmark button and ensure that it is saved to your bookmarks bar
@@ -41,12 +52,14 @@ On QuickTypingTest the prompt text doesn't update when holding space until you l
4152
9. Click the "TypeCheat" bookmark on a supported site whenever you want to activate TypeCheat.
4253

4354
#### Drag-and-drop bookmark
55+
4456
1. [Download TypeCheat](https://github.com/hackermancool/TypeCheat/archive/master.zip)
4557
2. Open the `typecheat-bookmark.html` file in whatever browser you'd like.
4658
3. Drag and drop the item labeled "TypeCheat" into your bookmarks bar.
4759
4. Click the bookmark on a supported site, and TypeCheat will activate.
4860

4961
### Copy-paste
62+
5063
0. Ensure that you're on a supported site
5164
1. Copy the contents of [`typecheat.min.js`](https://raw.githubusercontent.com/hackermancool/TypeCheat/master/typecheat.min.js) or [`typecheat-button.min.js`](https://raw.githubusercontent.com/hackermancool/TypeCheat/master/typecheat-button.min.js). The first will instantly run the code, and the other will create a button to be pressed first.
5265
2. Open the developer console (Ctrl+Shift+J on Chrome/Chromium Edge)
@@ -56,13 +69,14 @@ On QuickTypingTest the prompt text doesn't update when holding space until you l
5669
**Note: On TypeRacer, the code must be run after a race has been entered. It will not work on the main page.**
5770

5871
### If you're using `typecheat-button.min.js`
72+
5973
On **10FastFingers**, the button appears just **below** the text field.
6074
On **TypeRacer**, the button appears **in the navbar** above the "Blog, Forum, Pit Stop, About" buttons.
6175
On **TypingTestNow**, the button appears at the **top of the page** just under the navbar.
6276
On **Bing Typing Test**, the button appears in the typing test item **to the right of** the "Typing test" heading.
63-
On **LiveChat Inc**, the button appears in the header **just below the countdown timer**.
77+
On **LiveChat Inc**, the button appears **to the right of the accuracy stat**.
6478
On **QuickTypingTest**, the button appears at the **top of the page** in the navbar.
6579
On **AOEU Typing Speed Test**, the button appears **just above the text prompt** to the right of the flags.
66-
On **India Typing**, the button appears **to the right of the test frame**.
80+
On **India Typing**, the button appears **to the right of the test frame**.
6781

6882
**Note: On 10FastFingers, if you end up going through the entire text, the words will continue to autofill. If you continue to press space it can cause you to get incorrect words marked, despite the text being over.**

typecheat-bookmark.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@
2323
</head>
2424
<body style="font-family: Roboto, Arial, sans-serif;">
2525
<h1>Drag the bookmark below into your bookmarks bar</h1>
26-
<a style="color: black; text-decoration: none; padding: 20px; background-color: lightgray; text-align: center; border-radius: 25px;" href="javascript:/* * TypeCheat - A JS script to cheat on certain online typing tests * Copyright (C) 2020 hackermancool * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ var tText,tWords,cWord,tField,workWord,url=window.location.href.split('/')[2].replace('www.',''),site=-1,altMode=0;switch(url){case'10fastfingers.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: 10FastFingers\n~~~~~~~~~~~~~~~~~~~'),site=0,'text'==window.location.href.split('/')[3]&&(altMode=1);break;case'typeracer.com':case'play.typeracer.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: TypeRacer\n~~~~~~~~~~~~~~~~~~~'),site=1;break;case'typingtestnow.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: TypingTestNow\n~~~~~~~~~~~~~~~~~~~'),site=2;break;case'bing.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: Bing Test\n~~~~~~~~~~~~~~~~~~~'),site=3;break;case'livechat.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: LiveChat\n~~~~~~~~~~~~~~~~~~~'),site=4;break;case'quicktypingtest.com':console.log(' ~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: QuickTypingTest\n ~~~~~~~~~~~~~~~~~~~'),site=5;break;case'typing-speed-test.aoeu.eu':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: AOEU Test\n~~~~~~~~~~~~~~~~~~~'),site=6;break;case'indiatyping.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: India Typing\n~~~~~~~~~~~~~~~~~~~'),site=7}switch(site){case 0:tText=document.getElementById('row1'),tWords=[];for(var i=0;i<tText.children.length;i++)tWords.push(tText.children[i].innerText);tField=null,(cWord=0)==altMode?tField=document.getElementById('inputfield'):1==altMode&&(tField=document.getElementById('text_typed')),tField.addEventListener('keyup',function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 1:tText=document.querySelector('#gwt-uid-15 > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(1) > td > table > tbody > tr:nth-child(1) > td'),tWords=tText.innerText.split(' '),cWord=0,(tField=document.querySelector('#gwt-uid-15 > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(2) > td > input')).addEventListener('keydown',function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 2:tText=document.getElementsByClassName('sample-text')[0],tWords=[];for(i=0;i<tText.children.length;i++)for(var j=0;j<tText.children[i].children.length;j++)tWords.push(tText.children[i].children[j].innerText);cWord=0,(tField=document.getElementById('practice-input')).addEventListener('keydown',function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 3:tText=document.getElementById('edu_promptText'),tWords=[],workWord='';for(i=0;i<tText.children.length;i++)for(j=0;j<tText.children[i].children.length;j++)'space'==tText.children[i].children[j].className?(tWords.push(workWord),workWord=''):workWord+=tText.children[i].children[j].innerText;cWord=0,(tField=document.getElementById('edu_inputText')).addEventListener('keydown',function(e){32==e.keyCode&&(tField.value+=tWords[cWord],cWord++)});break;case 4:tText=document.getElementsByClassName('test-prompt')[0],tWords=[];for(i=0;i<tText.children.length;i++)tWords.push(tText.children[i].innerText);cWord=0,(tField=document.getElementById('test-input')).addEventListener('keydown',function(e){32==e.keyCode&&(tField.innerText=tWords[cWord],cWord++,tText.lastChild.innerText!=tWords.slice(-1)&&tWords.push(tText.lastChild.innerText))});break;case 5:tText=document.querySelector('#text-display'),tWords=[],workWord='';for(i=0;i<tText.children.length;i++){workWord='';for(j=0;j<tText.children[i].children.length;j++)workWord+=tText.children[i].children[j].innerText;tWords.push(workWord)}cWord=0,(tField=document.getElementById('text-input')).addEventListener('keydown',function(e){32==e.keyCode&&(tField.value+=tWords[cWord],cWord++)});break;case 6:tText=document.getElementById('words'),tWords=[];for(i=0;i<tText.children.length;i++)tWords.push(tText.children[i].innerText);cWord=0,(tField=document.getElementById('input')).addEventListener('keyup',function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 7:tText=document.getElementById('blockrandom').contentDocument.getElementById('unicodeText'),tWords=[];for(i=0;i<tText.children.length;i++)tWords.push(tText.children[i].innerText);cWord=0,(tField=document.getElementById('blockrandom').contentDocument.getElementById('toType')).addEventListener('keyup',function(e){32==e.keyCode&&(tField.value+=tWords[cWord],cWord++)})}">TypeCheat</a>
26+
<a style="color: black; text-decoration: none; padding: 20px; background-color: lightgray; text-align: center; border-radius: 25px;" href="javascript:let tText,tWords,cWord,tField,workWord,url=window.location.href.split('/')[2].replace('www.',''),site=-1,altMode=0;switch(url){case'10fastfingers.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: 10FastFingers\n~~~~~~~~~~~~~~~~~~~'),site=0,'text'==window.location.href.split('/')[3]&&(altMode=1);break;case'typeracer.com':case'play.typeracer.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: TypeRacer\n~~~~~~~~~~~~~~~~~~~'),site=1;break;case'typingtestnow.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: TypingTestNow\n~~~~~~~~~~~~~~~~~~~'),site=2;break;case'bing.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: Bing Test\n~~~~~~~~~~~~~~~~~~~'),site=3;break;case'livechat.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: LiveChat\n~~~~~~~~~~~~~~~~~~~'),site=4;break;case'quicktypingtest.com':console.log(' ~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: QuickTypingTest\n ~~~~~~~~~~~~~~~~~~~'),site=5;break;case'typing-speed-test.aoeu.eu':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: AOEU Test\n~~~~~~~~~~~~~~~~~~~'),site=6;break;case'indiatyping.com':console.log('~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: India Typing\n~~~~~~~~~~~~~~~~~~~'),site=7}switch(site){case 0:tText=document.getElementById('row1'),tWords=[];for(let e=0;e<tText.children.length;e++)tWords.push(tText.children[e].innerText);cWord=0,tField=null,0==altMode?tField=document.getElementById('inputfield'):1==altMode&&(tField=document.getElementById('text_typed')),tField.addEventListener('keyup',function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 1:tText=document.querySelector('#gwt-uid-15 > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(1) > td > table > tbody > tr:nth-child(1) > td'),tWords=tText.innerText.split(' '),cWord=0,(tField=document.querySelector('#gwt-uid-15 > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(2) > td > input')).addEventListener('keydown',function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 2:tText=document.getElementsByClassName('sample-text')[0],tWords=[];for(let e=0;e<tText.children.length;e++)for(let t=0;t<tText.children[e].children.length;t++)tWords.push(tText.children[e].children[t].innerText);cWord=0,(tField=document.getElementById('practice-input')).addEventListener('keydown',function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 3:tText=document.getElementById('edu_promptText'),tWords=[],workWord='';for(let e=0;e<tText.children.length;e++)for(let t=0;t<tText.children[e].children.length;t++)'space'==tText.children[e].children[t].className?(tWords.push(workWord),workWord=''):workWord+=tText.children[e].children[t].innerText;cWord=0,(tField=document.getElementById('edu_inputText')).addEventListener('keydown',function(e){32==e.keyCode&&(tField.value+=tWords[cWord],cWord++)});break;case 4:tText=document.getElementsByClassName('tst-input-wrapper')[1],tWords=[];for(let e=0;e<tText.children.length;e++)tWords.push(tText.children[e].innerText);cWord=0,(tField=document.getElementById('test-input')).addEventListener('keydown',function(e){32==e.keyCode&&(tField.innerText=tWords[cWord],cWord++,tText.lastChild.innerText!=tWords.slice(-1)&&tWords.push(tText.lastChild.innerText))});break;case 5:tText=document.querySelector('#text-display'),tWords=[],workWord='';for(let e=0;e<tText.children.length;e++){workWord='';for(let t=0;t<tText.children[e].children.length;t++)workWord+=tText.children[e].children[t].innerText;tWords.push(workWord)}cWord=0,(tField=document.getElementById('text-input')).addEventListener('keydown',function(e){32==e.keyCode&&(tField.value+=tWords[cWord],cWord++)});break;case 6:tText=document.getElementById('words'),tWords=[];for(let e=0;e<tText.children.length;e++)tWords.push(tText.children[e].innerText);cWord=0,(tField=document.getElementById('input')).addEventListener('keyup',function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 7:tText=document.getElementById('blockrandom').contentDocument.getElementById('unicodeText'),tWords=[];for(let e=0;e<tText.children.length;e++)tWords.push(tText.children[e].innerText);cWord=0,(tField=document.getElementById('blockrandom').contentDocument.getElementById('toType')).addEventListener('keyup',function(e){32==e.keyCode&&(tField.value+=tWords[cWord],cWord++)})}">TypeCheat</a>
2727
</body>
2828
</html>

typecheat-button.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ function bingCheat() {
158158
// LiveChat
159159
function liveChatCheat() {
160160
// Generate wordlist
161-
tText = document.getElementsByClassName('test-prompt')[0];
161+
tText = document.getElementsByClassName('tst-input-wrapper')[1];
162162
tWords = [];
163163
for(let i = 0; i < tText.children.length; i++) {
164164
tWords.push(tText.children[i].innerText);
@@ -177,7 +177,7 @@ function liveChatCheat() {
177177
}
178178
});
179179
// Change button colour to show that it has activated
180-
document.getElementsByClassName('metrics')[1].children[1].style = 'color: #0F0;';
180+
document.querySelector('.u-flex.u-flex-col-rev').children[2].style = 'color: #0F0;';
181181
}
182182

183183
// QuickTypingTest
@@ -273,7 +273,7 @@ switch(site) {
273273
// LiveCheat Inc
274274
case 4:
275275
// Create cheat button
276-
document.getElementsByClassName('metrics')[1].innerHTML += '<button onclick="liveChatCheat();">Start TypeCheat</button>';
276+
document.querySelector('.u-flex.u-flex-col-rev').innerHTML += '<button onclick="liveChatCheat();">Start TypeCheat</button>';
277277
break;
278278
// QuickTypingTest
279279
case 5:

0 commit comments

Comments
 (0)