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

Commit 3597cf5

Browse files
Added support for QuickTypingTest.
1 parent f7cc5bf commit 3597cf5

File tree

6 files changed

+98
-34
lines changed

6 files changed

+98
-34
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ As of now, the sites that work are:
88
- [TypingTestNow](https://typingtestnow.com/)
99
- [Bing Typing Test](https://www.bing.com/search?q=typing+test)
1010
- [LiveChat Inc](https://www.livechatinc.com/typing-speed-test)
11+
- [QuickTypingTest](https://www.quicktypingtest.com/)
1112

12-
I am planning to add support for more.
13+
I am planning to add support for more.
1314

1415
## Anticheat systems
1516
### 10FastFingers
@@ -20,6 +21,10 @@ If you go above a certain WPM (not sure exactly what), you will be forced to tak
2021
If you go moderately fast (>100 wpm), you will get a message asking you to do a test to confirm your score.
2122
If you go too fast, an alert box will appear saying that they believe you have cheated.
2223

24+
## Test UI Problems
25+
### QuickTypingTest
26+
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.
27+
2328
## Use
2429
### Bookmarks bar
2530
#### No downloads allowed

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,url=window.location.href.split(&quot;/&quot;)[2],site=-1,altMode=0;switch(&quot;10fastfingers.com&quot;==url||&quot;www.10fastfingers.com&quot;==url?(console.log(&quot;~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: 10FastFingers\n~~~~~~~~~~~~~~~~~~~&quot;),site=0,&quot;text&quot;==window.location.href.split(&quot;/&quot;)[3]&&(altMode=1)):&quot;play.typeracer.com&quot;==url||&quot;typeracer.com&quot;==url?(console.log(&quot;~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: TypeRacer\n~~~~~~~~~~~~~~~~~~~&quot;),site=1):&quot;typingtestnow.com&quot;==url||&quot;www.typingtestnow.com&quot;==url?(console.log(&quot;~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: TypingTestNow\n~~~~~~~~~~~~~~~~~~~&quot;),site=2):&quot;www.bing.com&quot;==url||&quot;bing.com&quot;==url?(console.log(&quot;~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: Bing Test\n~~~~~~~~~~~~~~~~~~~&quot;),site=3):&quot;www.livechatinc.com&quot;!=url&&&quot;livechatinc.com&quot;!=url||(console.log(&quot;~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite LiveChat Inc\n~~~~~~~~~~~~~~~~~~~&quot;),site=4),site){case 0:tText=document.getElementById(&quot;row1&quot;),tWords=[];for(var i=0;i<tText.children.length;i++)tWords.push(tText.children[i].innerText);tField=null,(cWord=0)==altMode?tField=document.getElementById(&quot;inputfield&quot;):1==altMode&&(tField=document.getElementById(&quot;text_typed&quot;)),tField.addEventListener(&quot;keyup&quot;,function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 1:tText=document.querySelector(&quot;#gwt-uid-15 > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(1) > td > table > tbody > tr:nth-child(1) > td&quot;),tWords=tText.innerText.split(&quot; &quot;),cWord=0,(tField=document.querySelector(&quot;#gwt-uid-15 > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(2) > td > input&quot;)).addEventListener(&quot;keydown&quot;,function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 2:tText=document.getElementsByClassName(&quot;sample-text&quot;)[0],tWords=[];for(i=0;i<tText.children.length;i++)for(var j=0;j<tText.children[i].children.length;j++)words.push(tText.children[i].children[j].innerText);cWord=0,(tField=document.getElementById(&quot;practice-input&quot;)).addEventListener(&quot;keydown&quot;,function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 3:tText=document.getElementById(&quot;edu_promptText&quot;),tWords=[];var workWord=&quot;&quot;;for(i=0;i<tText.children.length;i++)for(j=0;j<tText.children[i].children.length;j++)&quot;space&quot;==tText.children[i].children[j].className?(tWords.push(workWord),workWord=&quot;&quot;):workWord+=tText.children[i].children[j].innerText;cWord=0,(tField=document.getElementById(&quot;edu_inputText&quot;)).addEventListener(&quot;keydown&quot;,function(e){32==e.keyCode&&(tField.value+=tWords[cWord],cWord++)});break;case 4:tText=document.getElementsByClassName(&quot;test-prompt&quot;)[0],tWords=[];for(i=0;i<tText.children.length;i++)tWords.push(tText.children[i].innerText);cWord=0,(tField=document.getElementById(&quot;test-input&quot;)).addEventListener(&quot;keydown&quot;,function(e){32==e.keyCode&&(tField.innerText=tWords[cWord],cWord++,tText.children[tText.children.length-1].innerText!=tWords.slice(-1)&&tWords.push(tText.children[tText.children.length-1].innerText))})}">TypeCheat</a>
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(&quot;/&quot;)[2].replace(&quot;www.&quot;,&quot;&quot;),site=-1,altMode=0;switch(&quot;10fastfingers.com&quot;==url?(console.log(&quot;~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: 10FastFingers\n~~~~~~~~~~~~~~~~~~~&quot;),site=0,&quot;text&quot;==window.location.href.split(&quot;/&quot;)[3]&&(altMode=1)):&quot;play.typeracer.com&quot;==url||&quot;typeracer.com&quot;==url?(console.log(&quot;~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: TypeRacer\n~~~~~~~~~~~~~~~~~~~&quot;),site=1):&quot;typingtestnow.com&quot;==url?(console.log(&quot;~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: TypingTestNow\n~~~~~~~~~~~~~~~~~~~&quot;),site=2):&quot;bing.com&quot;==url?(console.log(&quot;~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: Bing Test\n~~~~~~~~~~~~~~~~~~~&quot;),site=3):&quot;livechatinc.com&quot;==url?(console.log(&quot;~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: LiveChat Inc\n~~~~~~~~~~~~~~~~~~~&quot;),site=4):&quot;quicktypingtest.com&quot;==url&&(console.log(&quot; ~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: QuickTypingTest\n ~~~~~~~~~~~~~~~~~~~&quot;),site=5),site){case 0:tText=document.getElementById(&quot;row1&quot;),tWords=[];for(var i=0;i<tText.children.length;i++)tWords.push(tText.children[i].innerText);tField=null,(cWord=0)==altMode?tField=document.getElementById(&quot;inputfield&quot;):1==altMode&&(tField=document.getElementById(&quot;text_typed&quot;)),tField.addEventListener(&quot;keyup&quot;,function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 1:tText=document.querySelector(&quot;#gwt-uid-15 > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(1) > td > table > tbody > tr:nth-child(1) > td&quot;),tWords=tText.innerText.split(&quot; &quot;),cWord=0,(tField=document.querySelector(&quot;#gwt-uid-15 > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(2) > td > input&quot;)).addEventListener(&quot;keydown&quot;,function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 2:tText=document.getElementsByClassName(&quot;sample-text&quot;)[0],tWords=[];for(i=0;i<tText.children.length;i++)for(var j=0;j<tText.children[i].children.length;j++)words.push(tText.children[i].children[j].innerText);cWord=0,(tField=document.getElementById(&quot;practice-input&quot;)).addEventListener(&quot;keydown&quot;,function(e){32==e.keyCode&&(tField.value=tWords[cWord],cWord++)});break;case 3:tText=document.getElementById(&quot;edu_promptText&quot;),tWords=[],workWord=&quot;&quot;;for(i=0;i<tText.children.length;i++)for(j=0;j<tText.children[i].children.length;j++)&quot;space&quot;==tText.children[i].children[j].className?(tWords.push(workWord),workWord=&quot;&quot;):workWord+=tText.children[i].children[j].innerText;cWord=0,(tField=document.getElementById(&quot;edu_inputText&quot;)).addEventListener(&quot;keydown&quot;,function(e){32==e.keyCode&&(tField.value+=tWords[cWord],cWord++)});break;case 4:tText=document.getElementsByClassName(&quot;test-prompt&quot;)[0],tWords=[];for(i=0;i<tText.children.length;i++)tWords.push(tText.children[i].innerText);cWord=0,(tField=document.getElementById(&quot;test-input&quot;)).addEventListener(&quot;keydown&quot;,function(e){32==e.keyCode&&(tField.innerText=tWords[cWord],cWord++,tText.children[tText.children.length-1].innerText!=tWords.slice(-1)&&tWords.push(tText.children[tText.children.length-1].innerText))});break;case 5:tText=document.querySelector(&quot;#text-display&quot;),tWords=[],workWord=&quot;&quot;;for(i=0;i<tText.children.length;i++){workWord=&quot;&quot;;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(&quot;text-input&quot;)).addEventListener(&quot;keydown&quot;,function(e){32==e.keyCode&&(tField.value+=tWords[cWord],cWord++)})}">TypeCheat</a>
2727
</body>
2828
</html>

typecheat-button.js

Lines changed: 50 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,39 +33,42 @@
3333
* along with this program. If not, see <https://www.gnu.org/licenses/>.
3434
*/
3535
// Check current site
36-
let url = window.location.href.split("/")[2];
36+
let url = window.location.href.split("/")[2].replace("www.", "");
3737
let site = -1;
3838
let altMode = 0;
39-
if(url == "10fastfingers.com" || url == "www.10fastfingers.com") {
39+
if(url == "10fastfingers.com") {
4040
console.log("~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: 10FastFingers\n~~~~~~~~~~~~~~~~~~~");
4141
site = 0;
4242
if(window.location.href.split("/")[3] == "text") altMode = 1;
4343
} else if(url == "play.typeracer.com" || url == "typeracer.com") {
4444
console.log("~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: TypeRacer\n~~~~~~~~~~~~~~~~~~~");
4545
site = 1;
46-
} else if(url == "typingtestnow.com" || url == "www.typingtestnow.com") {
46+
} else if(url == "typingtestnow.com") {
4747
console.log("~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: TypingTestNow\n~~~~~~~~~~~~~~~~~~~");
4848
site = 2;
49-
} else if(url == "www.bing.com" || url == "bing.com") {
49+
} else if(url == "bing.com") {
5050
console.log("~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: Bing Test\n~~~~~~~~~~~~~~~~~~~");
5151
site = 3;
52-
} else if(url == "www.livechatinc.com" || url == "livechatinc.com") {
53-
console.log("~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite LiveChat Inc\n~~~~~~~~~~~~~~~~~~~");
52+
} else if(url == "livechatinc.com") {
53+
console.log("~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: LiveChat Inc\n~~~~~~~~~~~~~~~~~~~");
5454
site = 4;
55+
} else if(url == "quicktypingtest.com") {
56+
console.log(" ~~~~~~~~~~~~~~~~~~~\n TypeCheat Active! \nSite: QuickTypingTest\n ~~~~~~~~~~~~~~~~~~~");
57+
site = 5;
5558
}
5659

5760
// Variables
58-
let tText, tWords, cWord, tField;
61+
let tText, tWords, cWord, tField, workWord;
5962

60-
// 10FastFingers Cheat Code
63+
// 10FastFingers
6164
function tenFastCheat() {
6265
// Generate wordlist
6366
tText = document.getElementById("row1");
6467
tWords = [];
6568
for(let i = 0; i < tText.children.length; i++) {
6669
tWords.push(tText.children[i].innerText);
6770
}
68-
// Interval
71+
// Cheat
6972
cWord = 0;
7073
// Different method for different modes
7174
tField = null;
@@ -84,12 +87,12 @@ function tenFastCheat() {
8487
document.getElementById("ads-speedtest-view-container").children[0].style = "width: 100%; color: #0F0;";
8588
}
8689

87-
// TypeRacer Cheat Code
90+
// TypeRacer
8891
function typeRacerCheat() {
8992
// Generate wordlist
9093
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");
9194
tWords = tText.innerText.split(" ");
92-
// Interval
95+
// Cheat
9396
cWord = 0;
9497
tField = document.querySelector("#gwt-uid-15 > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(2) > td > input");
9598
tField.addEventListener("keydown", function(e) {
@@ -102,7 +105,7 @@ function typeRacerCheat() {
102105
document.getElementsByClassName("navigation")[0].children[0].style = "width: 100%; color: #0F0;";
103106
}
104107

105-
// TypingTestNow Cheat Code
108+
// TypingTestNow
106109
function typingTestNowCheat() {
107110
// Generate wordlist
108111
tText = document.getElementsByClassName("sample-text")[0];
@@ -112,7 +115,7 @@ function typingTestNowCheat() {
112115
words.push(tText.children[i].children[j].innerText);
113116
}
114117
}
115-
// Interval
118+
// Cheat
116119
cWord = 0;
117120
tField = document.getElementById("practice-input");
118121
tField.addEventListener("keydown", function(e) {
@@ -125,7 +128,7 @@ function typingTestNowCheat() {
125128
document.getElementsByClassName("row")[0].children[0].style = "width: 100%; color: #0F0;";
126129
}
127130

128-
// Bing Typing Test Cheat Code
131+
// Bing Typing Test
129132
function bingCheat() {
130133
// Generate wordlist
131134
tText = document.getElementById("edu_promptText");
@@ -141,7 +144,7 @@ function bingCheat() {
141144
}
142145
}
143146
}
144-
// Interval
147+
// Cheat
145148
cWord = 0;
146149
tField = document.getElementById("edu_inputText");
147150
tField.addEventListener("keydown", function(e) {
@@ -153,15 +156,15 @@ function bingCheat() {
153156
// Change button colour to show that it has activated
154157
document.getElementById("edu_answer").children[0].children[0].getElementsByTagName("button")[0].style = "color: #0F0;";
155158
}
156-
// LiveChat Inc Cheat Code
159+
// LiveChat Inc
157160
function liveChatCheat() {
158161
// Generate wordlist
159162
tText = document.getElementsByClassName("test-prompt")[0];
160163
tWords = [];
161164
for(let i = 0; i < tText.children.length; i++) {
162165
tWords.push(tText.children[i].innerText);
163166
}
164-
// Interval
167+
// Cheat
165168
cWord = 0;
166169
tField = document.getElementById("test-input");
167170
tField.addEventListener("keydown", function(e) {
@@ -178,6 +181,32 @@ function liveChatCheat() {
178181
document.getElementsByClassName("metrics")[1].children[1].style = "color: #0F0;";
179182
}
180183

184+
// QuickTypingTest
185+
function quickTypingCheat() {
186+
// Generate wordlist
187+
tText = document.querySelector("#text-display");
188+
tWords = [];
189+
workWord = "";
190+
for(let i = 0; i < tText.children.length; i++) {
191+
workWord = "";
192+
for(let j = 0; j < tText.children[i].children.length; j++) {
193+
workWord += tText.children[i].children[j].innerText;
194+
}
195+
tWords.push(workWord);
196+
}
197+
// Cheat
198+
cWord = 0;
199+
tField = document.getElementById("text-input");
200+
tField.addEventListener("keydown", function(e) {
201+
if(e.keyCode == 32) {
202+
tField.value += tWords[cWord];
203+
cWord++;
204+
}
205+
});
206+
// Change button colour to show that it has activated
207+
document.getElementById("navbarResponsive").children[0].style = "width: 100%; color: #0F0;";
208+
}
209+
181210
// Cheat
182211
switch(site) {
183212
// 10FastFingers (Normal)
@@ -205,4 +234,8 @@ switch(site) {
205234
// Create cheat button
206235
document.getElementsByClassName("metrics")[1].innerHTML += "<button onclick=\"javascript:liveChatCheat();\">Start TypeCheat</button>"
207236
break;
237+
// QuickTypingTest
238+
case 5:
239+
document.getElementById("navbarResponsive").innerHTML = "<button style=\"width: 100%;\" onclick=\"javascript:quickTypingCheat();\">Start TypeCheat</button>" + document.getElementById("navbarResponsive").innerHTML;
240+
break;
208241
}

0 commit comments

Comments
 (0)