Advertisement
Guest User

Untitled

a guest
Oct 4th, 2018
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.77 KB | None | 0 0
  1. const fs = require('fs');
  2. const lodashArray = require('lodash/array');
  3. const webdriverio = require('webdriverio');
  4. const options = { desiredCapabilities: { browserName: 'chrome', platform: 'XP'} };
  5. const client = webdriverio.remote(options);
  6. const async = require('async');
  7.  
  8.  
  9. const nl = (process.platform === 'win32' ? '\r\n' : '\n');
  10.  
  11. let facebookURL = '';
  12.  
  13. let usersListIterator = 0;
  14. let usersList = [];
  15. let completedUsernames = [];
  16.  
  17. let lastToken = '';
  18.  
  19.  
  20. function urlHashSearch( name, url ) {
  21. if (!url) url = location.href;
  22. name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  23. var regexS = "[\\#&]"+name+"=([^&#]*)";
  24. var regex = new RegExp( regexS );
  25. var results = regex.exec( url );
  26. return results == null ? null : results[1];
  27. }
  28.  
  29.  
  30. function urlParamSearch( name, url ) {
  31. if (!url) url = location.href;
  32. name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  33. var regexS = "[\\?&]"+name+"=([^&?]*)";
  34. var regex = new RegExp( regexS );
  35. var results = regex.exec( url );
  36. return results == null ? null : results[1];
  37. }
  38.  
  39. class FB {
  40. static login(user) {
  41. return new Promise((resolve, reject) => {
  42. client
  43. .init()
  44. .url('http://facebook.com/login.php')
  45. .pause(500)
  46. .setValue('#loginform input[name=email]', user.username)
  47. .pause(500)
  48. .setValue('#loginform input[name=pass]', user.password)
  49. .pause(500)
  50. .click('button[name=login]')
  51. .pause(500)
  52. .call(() => {
  53. let url = client.getUrl();
  54. let tmpInterval = setInterval(() => {
  55. async.parallel({
  56. url: (callback) => {
  57. client.getUrl().then(url => {
  58. callback(null, url);
  59. })
  60. },
  61. loginButtonExist:(callback) =>{
  62. client.isExisting('#loginbutton').then(exist => {
  63. callback(null, exist);
  64. });
  65. }
  66. },
  67. (err, results) => {
  68. if (err) {
  69. reject(err);
  70. }
  71. const lockAccount = '/checkpoint/';
  72. if (urlParamSearch('login_attempt', results.url) !== null) { //sprawdzanie czy logowanie sie nie powiodlo
  73. reject('unsuccessful login, bad/password probably');
  74. clearInterval(tmpInterval);
  75. }else if(results.url.indexOf(lockAccount) !== -1) {
  76. reject('unsuccessful login, Account locked');
  77. clearInterval(tmpInterval);
  78. }else {
  79. if (results.loginButtonExist === false) { //logowanie sie powiodlo bo zniknal button
  80. console.log('login Successfull');
  81. resolve();
  82. clearInterval(tmpInterval);
  83. }
  84. }
  85. });
  86. }, 500);
  87. });
  88. })
  89. }
  90. static gettoken()
  91. {
  92. return new Promise((resolve, reject) => {
  93. client.url('http://facebook.com/profile.php')
  94. client.pause(1000);
  95.  
  96. var sourcebool = false;
  97. let tmpIntervall = setInterval(() => {
  98. client.getUrl().then(url => {
  99. client.isExisting('div[id=bluebarRoot]').then(isExisting => {
  100. if (isExisting === true) {
  101. clearInterval(tmpIntervall);
  102. if(sourcebool == false){
  103. sourcebool = true;
  104.  
  105.  
  106. client.getSource().then(function(source) {
  107. var sourcec = source;
  108. var string1 =source;
  109. var n =sourcec.search("EAAAAU");
  110.  
  111. string1 = string1.slice(n);
  112. n =string1.search("\"");
  113. const accessToken = string1.slice(0,n);
  114. fs.appendFile('./tokens.txt', accessToken+nl, (err) => {
  115. if (err) return console.log(err);
  116. console.log(accessToken);
  117. fs.appendFile('./completed.txt', usersList[usersListIterator].username+nl, (err) => {
  118. resolve();
  119. });
  120. });
  121.  
  122. });
  123. }
  124. }
  125. })
  126. })
  127. },100);
  128.  
  129. })
  130. }
  131. }
  132.  
  133.  
  134.  
  135. function facebookInit() {
  136. if (typeof usersList[usersListIterator] !== 'undefined') {
  137. FB.login(usersList[usersListIterator])
  138. .then(FB.gettoken)
  139. .then(() => {
  140. client.end().then(() => {
  141. setTimeout(() => {
  142. usersListIterator++;
  143. console.log('token saved');
  144. facebookInit();
  145. }, 2000);
  146. })
  147. })
  148. .catch(err => {
  149. client.end().then(() => {
  150. setTimeout(() => {
  151. console.log(err);
  152. fs.appendFile('./completed.txt', usersList[usersListIterator].username+nl, (err) => {
  153. usersListIterator++;
  154. facebookInit();
  155. });
  156. }, 2000);
  157. })
  158. })
  159. }else {
  160. console.log('DONE');
  161. }
  162. }
  163.  
  164.  
  165. fs.readFile('./config.json', 'utf8', (err,data) => {
  166. if (err) {
  167. return console.log(err);
  168. }
  169. const jsonData = JSON.parse(data);
  170. facebookURL = 'https://www.facebook.com/v2.8/dialog/oauth?redirect_uri=fbconnect://success&scope=email,publish_actions,publish_pages,user_about_me,user_actions.books,user_actions.music,user_actions.news,user_actions.video,user_activities,user_birthday,user_education_history,user_events,user_games_activity,user_groups,user_hometown,user_interests,user_likes,user_location,user_notes,user_photos,user_questions,user_relationship_details,user_relationships,user_religion_politics,user_status,user_subscriptions,user_videos,user_website,user_work_history,friends_about_me,friends_actions.books,friends_actions.music,friends_actions.news,friends_actions.video,friends_activities,friends_birthday,friends_education_history,friends_events,friends_games_activity,friends_groups,friends_hometown,friends_interests,friends_likes,friends_location,friends_notes,friends_photos,friends_questions,friends_relationship_details,friends_relationships,friends_religion_politics,friends_status,friends_subscriptions,friends_videos,friends_website,friends_work_history,ads_management,create_event,create_note,export_stream,friends_online_presence,manage_friendlists,manage_notifications,manage_pages,photo_upload,publish_stream,read_friendlists,read_insights,read_mailbox,read_page_mailboxes,read_requests,read_stream,rsvp_event,share_item,sms,status_update,user_online_presence,video_upload,xmpp_login&response_type=token,code&client_id=193278124048833';
  171. fs.readFile('./users.txt', 'utf8', (err,data) => {
  172. if (err) {
  173. return console.log(err);
  174. }
  175. const rows = data.split(/\r|\n/);
  176. rows.filter(row => row !== '')
  177. .map(row => {
  178. const userData = row.split(':');
  179. usersList.push({
  180. username: userData[0],
  181. password: userData[1]
  182. });
  183. });
  184. fs.readFile('./completed.txt', 'utf8', (err,data) => {
  185. if (err) {
  186. return console.log(err);
  187. }
  188. const rows = data.split(/\r|\n/);
  189. completedUsernames = rows.filter(row => row !== '');
  190. completedUsernames.map(user => {
  191. const index = lodashArray.findIndex(usersList, { 'username': user });
  192. if (index !== -1) {
  193. console.log('account already done: ' + user);
  194. usersList.splice(index, 1);
  195. }
  196. })
  197. console.log('Loaded users: ' + usersList.length);
  198. if (usersList.length > 0) {
  199. facebookInit();
  200. }else {
  201. console.log('Not enought users!');
  202. }
  203. });
  204. });
  205. });
  206.  
  207.  
  208. process.on('uncaughtException', (err) => {
  209. console.log(err);
  210. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement