
22.02.2010, 11:51
|
|
Познающий
Регистрация: 05.09.2009
Сообщений: 34
С нами:
8779641
Репутация:
14
|
|
Antigate python 3.1
Я вроде адаптировал функцию, но почему то выдает
Traceback (most recent call last): File "C:\Users\VeNOm\Desktop\mypy\vk\vk.py", line 125, in ant s=send_cap('*********************', 'captcha.jpeg') File "C:\Users\VeNOm\Desktop\mypy\vk\vk.py", line 55, in send_cap h.request("POST", "/in.php", body, headers) File "C:\Python31\lib\http\client.py", line 918, in request self._send_request(method, url, body, headers) File "C:\Python31\lib\http\client.py", line 956, in _send_request self.endheaders(body) File "C:\Python31\lib\http\client.py", line 914, in endheaders self._send_output(message_body) File "C:\Python31\lib\http\client.py", line 768, in _send_output self.send(msg) File "C:\Python31\lib\http\client.py", line 716, in send self.connect() File "C:\Python31\lib\http\client.py", line 698, in connect self.timeout) File "C:\Python31\lib\socket.py", line 292, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): socket.gaierror: [Errno 11004] getaddrinfo failed
Сама функция
Код:
import urllib.request
import urllib.parse
import re
import codecs
import logging
import http.client
def send_cap(key, fn):
''' Отправляем капчу на anti-capcha.com
Вход:
key - ключ на антикапче
fn - файл с капчей
Выход:
id капчи - в случае успеха
False - неудача
'''
logging.info('--- Send captcha')
data = open(fn, 'rb').read()
# разделитель для данных
boundary= '----------OmNaOmNaOmNamo'
# тело HTTP-запроса
body = '''--%s
Content-Disposition: form-data; name="method"
post
--%s
Content-Disposition: form-data; name="key"
%s
--%s
Content-Disposition: form-data; name="file"; filename="capcha.jpg"
Content-Type: image/pjpeg
%s
--%s--
''' % (boundary, boundary, key, boundary, data, boundary)
# заголовки HTTP-запроса
headers = {'Content-type' : 'multipart/form-data; boundary=%s' % boundary}
# подключение к HTTP-серверу
h = http.client.HTTPConnection('antigate.com')
# посылка запроса
h.request("POST", "/in.php", body, headers)
# получение и анализ ответа HTTP-сервера
resp = h.getresponse()
data = resp.read()
h.close()
if resp.status == 200:
cap_id= int(data.split('|')[1])
return cap_id
else:
logging.error('Captcha not send: %s %s' % (resp.status, resp.reason))
return False
|
|
|