Advertisement
Guest User

Untitled

a guest
Aug 4th, 2016
384
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.92 KB | None | 0 0
  1. // Requires
  2. var casper = require('casper').create({
  3. verbose: true,
  4. logLevel: "debug"
  5. });
  6. var nicknames = require('./nicknames.json');
  7. var fs = require('fs');
  8.  
  9. // Settings
  10. var start = 0; // Start from x (NAMEx, EMAIL+x@domain.com)
  11. var end = 10; // Up to x, but not including (exclusive)
  12.  
  13. var useNicknamesFile = true; // Use nicknames file, or just append numbers to username?
  14. var useRandomPassword = false; // Generate a random password?
  15.  
  16. var outputFile = 'accounts.txt'; // File which will contain the generated "username password" combinations.
  17. var outputFormat = '%NICK% %PASS%\r\n'; // Format used to save the account data in outputFile. Supports %NICK%, %PASS%.
  18.  
  19. var country = 'US'; // Country code (BE, NL, FR, ...)
  20. var dob = '1990-12-30'; // Date of birth, YYYY-mm-dd
  21. var username = 'user'; // User- & display name. Make sure any "(username + number)@domain.com" is 100% unique.
  22. var password = 'pass'; // Static password for all accounts. Ignored if useRandomPassword is true.
  23. var email_user = 'jaydizzldawg'; // If your email is email@domain.com, enter "email"
  24. var email_domain = 'gmail.com'; // Domain of e-mail host
  25.  
  26. // App data
  27. var url_ptc = 'https://club.pokemon.com/us/pokemon-trainer-club/sign-up/';
  28.  
  29. // Settings check
  30. if (!useNicknamesFile && (username + end).length > 16) {
  31. console.log("Error: length of username + number can't be longer than 16 characters.");
  32. console.log("Please use a shorter nickname.");
  33. process.exit();
  34. }
  35.  
  36. if ((email_user + '+' + username + end + '@' + email_domain).length > 75) {
  37. console.log("Error: length of e-mail address including the + trick can't be longer than 75 characters.");
  38. console.log("Please use a shorter e-mail address and/or nickname.");
  39. process.exit();
  40. }
  41.  
  42. if (!useRandomPassword && password.length > 15) {
  43. console.log("Error: length of password can't be longer than 15 characters.");
  44. console.log("Please use a shorter password.");
  45. process.exit();
  46. }
  47.  
  48. // LETSAHGO
  49. casper.start();
  50.  
  51. casper.on('complete.error', function(err) {
  52. this.echo("Complete callback has failed: " + err);
  53. });
  54.  
  55. casper.on('error', function(msg, trace) {
  56. this.echo("Err: " + msg, "ERROR");
  57. });
  58.  
  59. casper.on("page.error", function(msg, trace) {
  60. this.echo("Error: " + msg, "ERROR");
  61. });
  62.  
  63. console.log('[o] Starting ' + start + ' to ' + (end - 1) + '.');
  64.  
  65. for(var i = start; i < end; i++) {
  66. (function(ctr) {
  67. casper.thenOpen(url_ptc, handleDobPage.bind(casper, ctr)).then(handleSignupPage.bind(casper, ctr)).then(handleFinished.bind(casper, ctr));
  68. })(i);
  69. }
  70.  
  71. casper.run();
  72.  
  73. function randomPassword() {
  74. return Math.random().toString(36).substr(2, 8);
  75. }
  76.  
  77. // Pages
  78. function handleDobPage(ctr) {
  79. this.echo('[' + ctr + '] First Page: ' + this.getTitle());
  80.  
  81. this.fill('form[name="verify-age"]', {
  82. 'dob': dob,
  83. 'country': country
  84. }, true);
  85. }
  86.  
  87. function handleSignupPage(ctr) {
  88. // Server sometimes messes up and redirects us to the verify-age page again
  89. if(this.exists('form[name="verify-age"]')) {
  90. this.echo('[' + ctr + '] Server is acting up. Retrying...');
  91. handleDobPage.call(this, ctr);
  92. this.then(handleSignupPage.bind(casper, ctr));
  93. return;
  94. }
  95.  
  96. // OK we're on the right page
  97. var _pass = password;
  98. var _nick = username + ctr;
  99.  
  100. var formdata = {
  101. 'terms': true
  102. };
  103.  
  104. this.echo('[' + ctr + '] Second Page: ' + this.getTitle());
  105.  
  106. // Random password?
  107. if(useRandomPassword) {
  108. _pass = randomPassword();
  109. }
  110.  
  111. // Use nicknames list, or (username + number) combo?
  112. if(useNicknamesFile) {
  113. // Make sure we have a nickname left
  114. if(nicknames.length < 1) {
  115. throw Error("We're out of nicknames to use!");
  116. }
  117.  
  118. // Get the first nickname off the list & use it
  119. _nick = nicknames.shift();
  120.  
  121. formdata['username'] = _nick;
  122. formdata['screen_name'] = _nick;
  123. formdata['email'] = email_user + '+' + _nick + '@' + email_domain;
  124. formdata['confirm_email'] = email_user + '+' + _nick + '@' + email_domain;
  125. } else {
  126. // Use username & counter
  127. formdata['username'] = _nick;
  128. formdata['screen_name'] = _nick;
  129. formdata['email'] = email_user + '+' + ctr + '@' + email_domain;
  130. formdata['confirm_email'] = email_user + '+' + ctr + '@' + email_domain;
  131. }
  132.  
  133. // Log it in the file of used nicknames
  134. var content = outputFormat.replace('%NICK%', _nick).replace('%PASS%', _pass);
  135. fs.write(outputFile, content, 'a');
  136.  
  137. formdata['password'] = _pass;
  138. formdata['confirm_password'] = _pass;
  139.  
  140. // Fill & submit
  141. this.fill('form#user-signup-create-account-form', formdata, true);
  142. }
  143.  
  144. function handleFinished(ctr) {
  145. this.echo('Finished ' + ctr + '.');
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement