# -*- coding: utf-8 -*-
import sys
import requests
import mimetypes
import random
import hashlib
import json
def get_captcha():
request = requests.get("http://macbook/api?act=remove_captcha")
return json.loads(request.text)
def get_content_type(filename):
return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
def multipart_build_query(fields, boundary):
data = []
for item in fields:
key, value = item.split(': ')
data.append('--' + boundary + '\r\n')
if key.find('image') != -1:
filename = value
data.append('Content-Disposition: form-data; name="%s"; filename="%s"\r\n' % (key, value))
data.append('Content-Type: %s\r\n\r\n' % get_content_type(filename))
if len(value) > 0:
data.append(open(filename).read())
data.append('\r\n')
else:
data.append('Content-Disposition: form-data; name="%s"\r\n\r\n' % key)
data.append(value + '\r\n')
data.append('--' + boundary + '--\r\n\r\n')
return ''.join(data)
def send(proxy):
captcha = get_captcha()
proxies = {"http": proxy}
try:
captcha_id = str(captcha["response"]["captcha_id"])
captcha_value = str(captcha["response"]["captcha_code"])
except:
print captcha["error"]
return
images = ["1.jpg", "", "", ""]
boundary = '----WebKitFormBoundary' + hashlib.sha1(str(random.randint(0, sys.maxint))).hexdigest()[:16]
headers = {'Content-Type': 'multipart/form-data; boundary=' + boundary}
fields = ['task: post', 'board: b', 'thread: 0', 'usercode: ', 'code: ',
'captcha_type: recaptcha', 'email: ', 'submit: Отправить', 'comment: ' + 'ololo!',
'image1: ' + images[0], 'image2: ' + images[1], 'image3: ' + images[2], 'image4: ' + images[3],
'2chaptcha_id: ' + captcha_id, '2chaptcha_value: ' + captcha_value]
data = multipart_build_query(fields, boundary)
try:
request = requests.post("http://2ch.pm/makaba/posting.fcgi", data = data, headers = headers, proxies = proxies, timeout = 3)
except:
print "request error %s" % proxy
return
try:
response = json.loads(request.text)
if response['Error'] is not None:
print response['Reason']
else:
print "Тред создан: http://2ch.pm/b/res/%s.html" % response['Target']
except:
print "json decode error"
proxy_list = open('proxy.txt')
for proxy in proxy_list.readlines():
pr = proxy.replace("\r\n", '')
send(pr)