stuppid_bot

Бомбим маил.ру

Feb 2nd, 2014
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.36 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import sys
  3. import os
  4. import httplib
  5. import urllib
  6. import urllib2
  7. import mimetypes
  8. import re
  9. import uuid
  10. user = '***@mail.ru'
  11. pswd = '***'
  12. glUserAgent = 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36'
  13. glCookie = ''
  14.  
  15. import socks
  16. import socket
  17. import urllib2
  18. import time
  19. socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 9150)
  20. socket.socket = socks.socksocket
  21.  
  22. # авторизуемся
  23. conn = httplib.HTTPConnection('m.mail.ru')
  24. conn.request('HEAD', '/cgi-bin/auth?Login=' + urllib.quote(user) + '&Password=' + urllib.quote(pswd), headers={'User-Agent': glUserAgent})
  25. r = conn.getresponse()
  26. if r.status != 302:
  27.     print u'Сервер вернул неожиданный ответ'
  28.     sys.exit()
  29. location = r.getheader('location')
  30. if location != 'https://e.mail.ru/messages/inbox/?back=1':
  31.     print u'Ошибка авторизации'
  32.     sys.exit()
  33. _ = re.findall(r'(?:^|(?<=, ))\w+=[^;]+', r.getheader('set-cookie'))
  34. glCookie = '; '.join(_)
  35.  
  36. def fetch_path(uri, content=None, add_headers={}):
  37.     headers = {
  38.         'User-Agent': glUserAgent,
  39.         'Cookie': glCookie
  40.     }
  41.     headers.update(add_headers)
  42.     # print headers
  43.     req = urllib2.Request('https://m.mail.ru/' + uri, content, headers)
  44.     return urllib2.urlopen(req)
  45.  
  46. class MultipartBody:
  47.     def __init__(self, boundary):
  48.         self.boundary = boundary
  49.         self.out = ''
  50.  
  51.     def add_text(self, name, text):
  52.         self.out += '--%s\r\n' % self.boundary
  53.         self.out += 'Content-Disposition: form-data; name="%s"\r\n\r\n' % name
  54.         self.out += text + '\r\n'
  55.  
  56.     def add_file(self, name, filename):
  57.         content = open(filename, 'rb').read()
  58.         self.out += '--%s\r\n' % self.boundary
  59.         self.out += 'Content-Disposition: form-data; name="%s"; filename="%s"\r\n' % (name, os.path.basename(filename))
  60.         extension = os.path.splitext(filename)[1]
  61.         self.out += 'Content-Type: %s\r\n\r\n' % (mimetypes.types_map[extension] if extension in mimetypes.types_map else 'application/octet-stream')
  62.         self.out += content + '\r\n'
  63.  
  64.     def __str__(self):
  65.         return self.out + '--' + self.boundary + '--'
  66.  
  67. def send_mail(to, subject, text, attach = None):
  68.     r = fetch_path('/compose/')
  69.     # извелекаем значения скрытых полей
  70.     hiddens = re.findall('<input type="hidden" name="([^"]+)" value="([^"]*)" />', r.read())
  71.     body = MultipartBody(uuid.uuid4().hex)
  72.     for name, value in hiddens:
  73.         body.add_text(name, value)
  74.     body.add_text('To', to)
  75.     body.add_text('Subject', subject.encode('utf-8'))
  76.     body.add_text('Body', text.encode('utf-8'))
  77.     if attach:
  78.         body.add_file('File', attach)
  79.     body.add_text('send', '')
  80.     r = fetch_path('/compose/', str(body), {'Content-Type': 'multipart/form-data; boundary=' + body.boundary})
  81.     if r.code == 200:
  82.         content = r.read().decode('utf-8')
  83.         if content.find(u'<div class="warning warning_notify">Ваше&nbsp;письмо&nbsp;отправлено. </div>') > 0:
  84.             print u'Письмо отправлено на адрес %s.' % to
  85.         else:
  86.             print u'Ошибка при отправке письма на адрес %s.' % to
  87.  
  88. send_mail('[email protected]', u'Привет', u'Как дела?');
Advertisement
Add Comment
Please, Sign In to add comment