Advertisement
Guest User

Untitled

a guest
Jan 26th, 2020
5,455
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. // Антидедовский скрипт.
  2. // Его можно добавить в браузер с помощью любого расширения, которое умеет инъектить код в открытые странички.
  3. // Пример такого расширения для хрома: https://chrome.google.com/webstore/detail/custom-javascript-for-web/ddbjnfjiigjmcpcpkmhogomapikjbjdk
  4.  
  5. // Что делает скрипт: заменяет картинки от "новых юзеров" на картинку http://2fan.ru/ch/img/2018/07/1531092365830_big.jpg.
  6. // Новые юзеры на текущий момент — это люди с ID > 1317324 или около того.
  7. // По крайней мере, на сегодняшний день этот ID работает.
  8.  
  9. const settings = {
  10. enabled: true,
  11. messageCheckingInterval: 300, // ms
  12. maxImagesPerMessage: 2,
  13. maxTrustedUserId: 1317324,
  14. placeholderUrl: "http://2fan.ru/ch/img/2018/07/1531092365830_big.jpg",
  15. };
  16.  
  17. const data = {
  18. messages: [],
  19. maxDetectedUserId: null
  20. };
  21.  
  22. const consts = {
  23. messageBlockClass: "message-block",
  24. messageIdAttribute: "tooltip",
  25. messageChatUserTag: "chat-user",
  26. regexUserIdPattern: /\d+/g,
  27. imageSmileClass: "smile"
  28. }
  29.  
  30. function checkMessages() {
  31. const messagesAll = document.getElementsByClassName(consts.messageBlockClass);
  32. for (let messageKey in messagesAll) {
  33. const msg = messagesAll[messageKey];
  34.  
  35. const userId = parseInt(getMessageUserId(msg));
  36. if (!userId) continue;
  37. if (!data.maxDetectedUserId || userId > data.maxDetectedUserId) data.maxDetectedUserId = userId;
  38. if (userId <= settings.maxTrustedUserId) continue;
  39.  
  40. let imgCounter = 0;
  41. const images = msg.getElementsByTagName("img");
  42. const messagesScope = [];
  43. for (let imageKey in images) {
  44. const img = images[imageKey];
  45. if (!(img && img.tagName)) continue;
  46. else if (img.classList && img.classList.contains(consts.imageSmileClass)) continue;
  47.  
  48. const msgId = userId + "_" + msg.getAttribute(consts.messageIdAttribute) + "_" + (imgCounter++);
  49. if (data.messages[msgId]) continue;
  50.  
  51. data.messages[msgId] = { userId: userId, imgElement: img };
  52. img.setAttribute("src", settings.placeholderUrl);
  53. messagesScope.push(data.messages[msgId]);
  54. }
  55.  
  56. if (messagesScope.length <= settings.maxImagesPerMessage) continue;
  57. for (let messageScopeKey in messagesScope) {
  58. const ms = messagesScope[messageScopeKey];
  59. ms.imgElement.setAttribute("src", settings.placeholderUrl);
  60. }
  61. }
  62. }
  63.  
  64. function getMessageUserId(msg) {
  65. if (!(msg && msg.getElementsByTagName)) return null;
  66. const chatUserElement = msg.getElementsByTagName(consts.messageChatUserTag)[0];
  67. if (!chatUserElement) return null;
  68. const userLinkAttribute = chatUserElement.getElementsByTagName("a")[0].getAttribute("href");
  69. return userLinkAttribute.match(consts.regexUserIdPattern)[0];
  70. }
  71.  
  72. window.getMaxUserId = function() { return data.maxDetectedUserId; };
  73.  
  74. if (settings.enabled) {
  75. setInterval(checkMessages, settings.messageCheckingInterval);
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement