Loger1

spamer

Apr 10th, 2023 (edited)
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.41 KB | None | 0 0
  1. (function() {
  2.  
  3. var message = localStorage.getItem('message1');
  4. var message2 = localStorage.getItem('message2');
  5. var message3 = localStorage.getItem('message3');
  6.  
  7.  
  8. try {
  9.  
  10. $('body').before('<div id="MSGWORK" style="position: fixed;right: 0;bottom: 0;z-index: 999999;background: #1d9bf0;font-size: 25px;padding: 5px;"></div>');
  11. $('body').before('<button id="openORshow" style="position: fixed;z-index: 999999; bottom: 0;">Скрыть/Открыть</button>');
  12. $('body').before('<div id="spamer" style="position: absolute;z-index: 99999;width: 321px;background: #b0b0b0;text-align: center;height: 100%;"></div>');
  13. $('#spamer').html(`
  14. <button id="spmtwtrStart"">Start Messaging</button>
  15. <button id="spmtwtrStop">Stop Messaging</button><br/><br/>
  16. <div>В окно ниже пихать парс</div>
  17. <textarea id='parselist' style="resize: none;" cols="40" rows="20"></textarea>
  18. <div><button id="listParsSave">Сохранить</button><div id='saveAndcount'>0</div></div>
  19. <div>Сообщения</div>
  20. <input type="number" id="totalMsg" style="width: 50px;"/> из <input type="number" id="maxMsg" style="width: 50px;"/>
  21. <br/>
  22. <div>3 окна = 31 сообщения</div>
  23. <textarea id='message1' style="resize: none;" cols="40" rows="5"></textarea>
  24. <textarea id='message2' style="resize: none;" cols="40" rows="5"></textarea>
  25. <textarea id='message3' style="resize: none;" cols="40" rows="5"></textarea>
  26. <div><button id="messagesavebtn">Сохранить</button></div>`);
  27.  
  28.  
  29. //НАЖАТИЕ КНОПКИ СТАРТ
  30. $('#spmtwtrStart').on('click', function(){
  31. startMessaging();
  32. });
  33.  
  34. $('#spmtwtrStop').on('click', function(){
  35. window.location.href = "https://twitter.com/messages";
  36. });
  37.  
  38. $('#openORshow').on('click', function(){
  39. $('#spamer').toggle();
  40. });
  41. //установка парсинга для спама
  42. var parselistSaved = localStorage.getItem('parselist');
  43. $('#listParsSave').on('click', function(){
  44. var parselist = $('#parselist').val();
  45. updParseLst(parselist);
  46. sndWorkmsg('Сохранено');
  47. });
  48. if(parselistSaved != null){
  49. $('#parselist').val(parselistSaved);
  50. }
  51. var updParseLst = function(updParseList){
  52. $('#parselist').val(updParseList);
  53. localStorage.setItem('parselist', updParseList);
  54. parselistSaved = updParseList;
  55. updCountParses();
  56. };
  57. var sndWorkmsg = function(msg){
  58. $('#MSGWORK').append('<div>'+msg+'</div>');
  59. setTimeout(function(){
  60. $('#MSGWORK').find('div')[0].remove();
  61. }, 5000);
  62. };
  63.  
  64. var updCountParses = function(){
  65. $('#saveAndcount').text(parselistSaved.split("\n").length);
  66. }
  67. updCountParses();
  68.  
  69. var updTotalMsg = function(totalMsg){
  70. localStorage.setItem('totalmsg', totalMsg);
  71. $('#totalMsg').val(totalMsg);
  72. }
  73.  
  74. if(localStorage.getItem('totalmsg') == null){
  75. updTotalMsg(0);
  76. }
  77. $('#totalMsg').val(localStorage.getItem('totalmsg')); //init
  78. $('#totalMsg').on('keyup change', function(){
  79. updTotalMsg($(this).val());
  80. sndWorkmsg("Сохранено");
  81. });
  82.  
  83. var updMaxMsg = function(MaxMsg){
  84. localStorage.setItem('maxMsg', MaxMsg);
  85. $('#maxMsg').val(MaxMsg);
  86. }
  87.  
  88. if(localStorage.getItem('maxMsg') == null){
  89. updMaxMsg(50);
  90. }
  91. $('#maxMsg').val(localStorage.getItem('maxMsg')); //init
  92. $('#maxMsg').on('keyup', function(){
  93. updMaxMsg($(this).val());
  94. sndWorkmsg("Сохранено");
  95. });
  96.  
  97.  
  98. if(localStorage.getItem('message1') != null){
  99. $('#message1').val(localStorage.getItem('message1'));
  100. $('#message2').val(localStorage.getItem('message2'));
  101. $('#message3').val(localStorage.getItem('message3'));
  102. }
  103. var updatemessage = function(){
  104. localStorage.setItem('message1', $('#message1').val());
  105. localStorage.setItem('message2', $('#message2').val());
  106. localStorage.setItem('message3', $('#message3').val());
  107. message = localStorage.getItem('message1');
  108. message2 = localStorage.getItem('message2');
  109. message3 = localStorage.getItem('message3');
  110. sndWorkmsg("Сохранено");
  111. };
  112. $('#messagesavebtn').click(function(){
  113. updatemessage();
  114. });
  115.  
  116. //VAR DEFAULT
  117. var checkModalInterval;
  118. var falseOrTrueFor = true; //Флаг указывающий в работе ли сейчас отправка сообщения конкретному человеку
  119. var messagingIInterval;
  120. var indUser = 1;
  121. if(localStorage.getItem('msgIndex') == null){
  122. localStorage.setItem('msgIndex', 1);
  123. }
  124. var firststart = true;
  125. var autoRestart = false;
  126. var sendedMessage = 25;
  127. var sendMsgSuccess = $.cookie('sendMsgSuccess');
  128.  
  129. var startMessaging = function(){
  130. messagingIInterval = setInterval(function(){
  131. if(falseOrTrueFor){
  132. if(sendMsgSuccess == undefined){
  133. sendMsgSuccess = 0;
  134. }
  135. autoRestart = false;
  136. firststart = false;
  137. falseOrTrueFor = false;
  138. var userName1 = parselistSaved.split("\n")[0];
  139. var userName = userName1;
  140. userName = userName.split("/")[3];
  141. var totalMsg = parseInt(localStorage.getItem('totalmsg'));
  142. var maxMsg = parseInt(localStorage.getItem('maxMsg'));
  143. if(totalMsg < maxMsg){
  144. updParseLst(parselistSaved.replace(userName1,'').replace(/(\r?\n)/, ""));
  145. updCountParses();
  146. if(userName != undefined){
  147. $("a[href='/messages/compose']")[0].click();
  148. checkModalDialog(userName);
  149. } else {
  150. clearInterval(messagingIInterval);
  151. alert("Парсы кончились, грузи новые начальник!");
  152. }
  153. } else {
  154. clearInterval(messagingIInterval);
  155. alert(totalMsg+" из "+ maxMsg + " отправлено!");
  156. }
  157. }
  158. }, 1000);};
  159.  
  160. var checkModalDialog = function(userName){
  161. checkModalInterval = setInterval(function(){
  162. if($("div[aria-labelledby='modal-header']").length != 0){
  163. clearInterval(checkModalInterval);
  164. setTimeout(function(){
  165. searchUser(userName);
  166. }, 500);
  167. }
  168. }, 300);
  169. };
  170.  
  171. var searchInterval;
  172. var searchedOrno;
  173. var searchTimeout;
  174. var searchUser = function(userName, repeatsearch = false){
  175. var inputSearch = $("input[placeholder='Search people']")[0];
  176. $(inputSearch).attr({'data-focusvisible-polyfill':'true' });
  177. $(inputSearch).focus();
  178. inputSearch.setAttribute('value', userName);
  179. inputSearch.dispatchEvent(new Event('input', { bubbles: true, cancelable: true}));
  180. var timeoutClick;
  181. searchInterval = setInterval(function(){
  182. var searchedUser = $("span:Contains('@"+userName+"')");
  183. var noMessage = $("span:Contains('@"+userName+" can’t be messaged')");
  184. searchedOrno = false;
  185.  
  186. if(searchedUser[0] != undefined){ //Найден ли пользователь
  187. if(noMessage[0] == undefined){ //Открыта ли личка
  188. searchedOrno = true; //объявляем что юзер найден
  189. sndWorkmsg("Пользователь найден.");
  190. clearInterval(searchInterval);
  191. clearTimeout(searchTimeout);
  192. userName = $(searchedUser[0]).text().replace('@', '');
  193. var realName = $($('div[data-testid="TypeaheadUser"]').find('span')[1]).text();
  194. timeoutClick = setTimeout(function(){
  195. goToUserPageMsg(searchedUser, inputSearch,userName, realName);
  196. }, 4000);
  197. } else {
  198. searchedOrno = true;
  199. sndWorkmsg("Личка закрыта");
  200. clearTimeout(timeoutClick);
  201. clearTimeout(searchTimeout);
  202. clearInterval(searchInterval);
  203. setTimeout(function(){
  204. falseOrTrueFor = true;
  205. }, 2000);
  206. }
  207. }
  208. }, 400);
  209.  
  210.  
  211. searchTimeout = setTimeout(function(){ //Если пользователь не нашелся
  212. sndWorkmsg("Пользователь не найден");
  213. clearInterval(searchInterval);
  214. setTimeout(function(){
  215. falseOrTrueFor = true;
  216. }, 2000);
  217. }, 5000);
  218. };
  219.  
  220. var goToUserPageMsg = function(searchedUser, inputSearchDOM,userName,realName){
  221. var userTarget = searchedUser.parents("div[role='button']")[0];
  222. var intervalLoadUserOption;
  223. var intervalClick;
  224. var timeoutBUG;
  225. sndWorkmsg("Кликнули по пользователю");
  226. console.log(userName);
  227. intervalClick = setInterval(function(){
  228. $('div[data-testid="UserAvatar-Container-'+userName+'"]').click();
  229. }, 2000);
  230. intervalLoadUserOption = setInterval(function(){ //ожидаем пока он добавится в лист отправителей
  231. if($($(inputSearchDOM).parents("form").get(0)).find("div")[0].childNodes[0].childNodes[0].childElementCount != 1){
  232. clearInterval(intervalClick);
  233. clearInterval(intervalLoadUserOption);
  234. clearTimeout(timeoutBUG);
  235. setTimeout(function(){
  236. $("div[data-testid='nextButton']")[0].click();
  237. var intervalLoadWinUserDM;
  238. intervalLoadWinUserDM = setInterval(function(){
  239. if($('section[aria-label="Section details"]').find('div[data-testid="tweetText"]').length == 0){
  240. clearInterval(intervalLoadWinUserDM);
  241. sndWorkmsg("Переходим к отправке сообщения.");
  242. waitLoadPageMsg(realName);
  243. } else {
  244. clearInterval(intervalLoadWinUserDM);
  245. sndWorkmsg("Сообщение отправлено не будет, у вас уже есть переписка.");
  246. falseOrTrueFor = true;
  247. }
  248. }, 500);
  249. }, 2000);
  250. }
  251. }, 200);
  252.  
  253. timeoutBUG = setTimeout(function(){ //ожидание перехода на новую страницу, если не случилось, идем дальше
  254. clearInterval(intervalClick);
  255. clearInterval(intervalLoadUserOption);
  256. sndWorkmsg("Не кликается по пользователю, ищу следующего");
  257. firststart = false;
  258. falseOrTrueFor = true;
  259. }, 7000);
  260.  
  261. //clearIntervals(); //временный
  262.  
  263. };
  264.  
  265. var waitLoadPageMsgInterval;
  266. var timeoutReload;
  267. var waitLoadPageMsg = function(realName){
  268. var msgIndex = parseInt(localStorage.getItem('msgIndex'));
  269. switch (msgIndex) {
  270. case 1:
  271. message = message.replace('{name}', realName);
  272. msgIndex = 2;
  273. localStorage.setItem('msgIndex', 2);
  274. break;
  275.  
  276. case 2:
  277. message = message2.replace('{name}', realName);
  278. localStorage.setItem('msgIndex', 3);
  279. break;
  280.  
  281. case 3:
  282. message = message3.replace('{name}', realName);
  283. localStorage.setItem('msgIndex', 1);
  284. break;
  285.  
  286. }
  287. var url = window.location.href;
  288. url += message;
  289. url += '&work=' + 'true';
  290. timeoutReload = setTimeout(function(){
  291. window.location.replace(url);
  292. }, 2000);
  293. };
  294. var sendMessageTimeout;
  295. var intervalCheckSendMessage;
  296. var sendMsgToUser = function(index){
  297. sendMessageTimeout = setTimeout(function(){
  298. $('div[aria-label="Send"]').click();
  299.  
  300. intervalCheckSendMessage = setInterval(function(){
  301.  
  302. if($('span:Contains("Message failed to send")')[0] != undefined){
  303. var totalmsgsend = parseInt(localStorage.getItem('totalmsg'));
  304. if(totalmsgsend < maxMSG){
  305. checkTryAgain();
  306. clearInterval(messagingIInterval);
  307. sndWorkmsg("Командир, палево, прекращаю рассылку на 20 минут.");
  308. } else {
  309. alert("Лимит достигнут, харош на сегодня!");
  310. }
  311. clearInterval(intervalCheckSendMessage);
  312. }
  313.  
  314. if($('span:Contains("Sent")')[0] != undefined){
  315. clearInterval(intervalCheckSendMessage);
  316. var totalmsgsendmess = parseInt(localStorage.getItem('totalmsg')) + 1;
  317. updTotalMsg(totalmsgsendmess);
  318. sndWorkmsg("Сообщение отправлено (Всего успешных " + totalmsgsendmess + ")");
  319. reworkStart();
  320. }
  321.  
  322. }, 1000);
  323. }, 9000);
  324. };
  325.  
  326. var intervalCheckTryAgain;
  327. var checkTryAgain = function(){ //функция проверки при неудачной попытке отправки сообщения (красное окно)
  328. setTimeout(function(){
  329. $('span:Contains("Try again")').parents("div").get(0).click();
  330. setTimeout(function(){
  331. intervalCheckTryAgain = setInterval(function(){
  332. if($('span:Contains("Message failed to send")')[0] != undefined){
  333. sndWorkmsg("Сообщения не отправляются, возможно достигнут лимит.");
  334. clearInterval(intervalCheckTryAgain);
  335. checkTryAgain();
  336. }
  337.  
  338. if($('span:Contains("Sent")')[0] != undefined){
  339. clearInterval(intervalCheckTryAgain);
  340. falseOrTrueFor = true;
  341. }
  342.  
  343. }, 1000);
  344. }, 2000);
  345. }, (1000*60)*20);
  346. }
  347. var reworkStart = function(){
  348. falseOrTrueFor = true;
  349. setTimeout(function(){
  350. startMessaging();
  351. }, 3000);
  352.  
  353. };
  354.  
  355. var stopMessaging = function(){
  356. clearInterval(messagingIInterval);
  357. clearInterval(checkModalInterval);
  358. clearInterval(searchInterval);
  359. clearTimeout(timeoutClick);
  360. clearTimeout(searchTimeout);
  361. clearInterval(intervalClick);
  362. clearInterval(intervalLoadUserOption);
  363. clearTimeout(timeoutBUG);
  364. clearTimeout( timeoutReload);
  365. clearTimeout(sendMessageTimeout);
  366. };
  367.  
  368. //UTILS
  369. var getUrlParameter = function getUrlParameter(sParam) {
  370. var sPageURL = decodeURIComponent(window.location.search.substring(1)),
  371. sURLVariables = sPageURL.split('&'),
  372. sParameterName,
  373. i;
  374.  
  375. for (i = 0; i < sURLVariables.length; i++) {
  376. sParameterName = sURLVariables[i].split('=');
  377.  
  378. if (sParameterName[0] === sParam) {
  379. sendMsgToUser(sParameterName[1] === undefined ? true : sParameterName[1]);
  380. }
  381. }
  382. };
  383. getUrlParameter("work"); //Перезапуск скрипта для отправки сообщения
  384.  
  385. jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
  386. return function( elem ) {
  387. return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
  388. };});
  389. } catch {
  390. console.log("ОШИБКА, ПЕРЕЗАПУСК");
  391. autoRestart = true;
  392. }
  393. })();
Advertisement
Add Comment
Please, Sign In to add comment