Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
 Аватар для sanodins
52 / 51 / 15
Регистрация: 27.06.2013
Сообщений: 192
Записей в блоге: 1

Капча МТС

24.12.2014, 12:43. Показов 3439. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не пойму, то ли урл обрезает где то, то ли еще чего.
Вроде все данные вводятся, а ошибку выдает, вроде как адрес неверен, и видно в ошибке обрезанный урл
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import Image
import pytesser
import requests  
import lxml.html
import shutil
 
#from lxml.html import fromstring, tostring
 
s = requests.session()
doc = lxml.html.fromstring(s.get('http://www.mts.ua/ru/online-services/send-sms').content)
 
images = doc.xpath('//img/@src')  
if not images:  
    sys.exit("Found No Images")
src = 'http://www.mts.ua'+ images[1]
print src 
print 'Found %s images' % len(images)
 
#############################################
 
response = s.get(src, stream=True)
with open('captcha.jpg', 'wb') as out_file:
    shutil.copyfileobj(response.raw, out_file)
del response
 
#############################################
im = Image.open('captcha.jpg')
text = pytesser.image_to_string(im)
print (text)
 
phonecod = "38066"
number = 'xxxxxxx'
textsms = 'privet'
 
form = doc.forms[1]
#print form.inputs.keys()
#print dir(form)
#print form.values()
 
form.fields['MessageForm[network]'] = phonecod
form.fields['MessageForm[phone]'] = number
#form.fields['YII_CSRF_TOKEN'] = token
form.fields['MessageForm[message]'] = textsms 
form.fields['MessageForm[verifyCode]'] = text
#print tostring(form)
#print form.form_values()
 
r = s.post(form.action, data=form.form_values())
ошибка
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Traceback (most recent call last):
  File "C:\Users\server\Desktop\pytesser_v0.0.1\testProgramm.py", line 48, in <module>
    r = s.post(form.action, data=form.form_values())
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 425, in post
    return self.request('POST', url, data=data, **kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 349, in request
    prep = self.prepare_request(req)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 287, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "C:\Python27\lib\site-packages\requests\models.py", line 287, in prepare
    self.prepare_url(url, params)
  File "C:\Python27\lib\site-packages\requests\models.py", line 338, in prepare_url
    "Perhaps you meant http://{0}?".format(url))
MissingSchema: Invalid URL u'/ru/online-services/send-sms': No schema supplied. Perhaps you meant [url]http:///ru/online-services/send-sms?[/url]
все формы на странице
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
==> at [url]http://www.mts.ua/ru/online-services/send-sms[/url]
 
Form #1
## ## __Name__________________ __Type___ __ID________ __Value__________________
1     q                        text      (None)        
2  1  None                     submi ... (None)        
 
 
Form #2
## ## __Name__________________ __Type___ __ID________ __Value__________________
1     YII_CSRF_TOKEN           hidden    (None)       fc2d717c487ee42cd72b9271660412cfe63a73e8 
2     widgetId                 hidden    widgetId     messager 
3     MessageForm[network]     select    MessageF ... ['38050'] of ['38050', '38066', '380 ... 
4     MessageForm[phone]       text      MessageF ...  
5     MessageForm[encoding]    select    sms_alphabet ['cyrilic'] of ['latin', 'cyrilic'] 
6     MessageForm[is_translit] hidden    ytMessag ... 0 
7     MessageForm[is_translit] checkbox  MessageF ... [] of ['1'] 
8     MessageForm[message]     textarea  sms_message   
9     MessageForm[verifyCode]  text      smsCaptcha    
10 1  None                     submi ... (None)        
 
 
Form #3
## ## __Name__________________ __Type___ __ID________ __Value__________________
1     Review[url]              hidden    Review_url   http://www.mts.ua/ru/online-services ... 
2     None                     text      (None)       http://www.mts.ua/ru/online-services ... 
3     Review[what_info]        textarea  Review_w ...  
4  1  None                     submi ... (None)        
 
 
Form #4
## ## __Name__________________ __Type___ __ID________ __Value__________________
1     Review[why_info]         textarea  Review_w ...  
2     Review[propose_info]     textarea  Review_p ...  
3  1  None                     submi ... (None)        
4  2  None                     submi ... (None)        
 
 
Form #5
## ## __Name__________________ __Type___ __ID________ __Value__________________
1     Review[firstname]        text      Review_f ...  
2     Review[patronymic]       text      Review_p ...  
3     Review[lastname]         text      Review_l ...  
4     Review[email]            email     Review_email  
5     Review[is_abonent_mts]   radio     (None)       ['1'] of ['1', '0'] 
6     Review[phone_prefix]     select    Review_p ... [''] of ['', '+38050', '+38066', '+3 ... 
7     Review[phone]            text      Review_phone  
8  1  None                     submi ... (None)        
9  2  None                     submi ... Review-s ...
Добавлено через 11 часов 4 минуты
Понял, в form.action был обрезанный урл
сделал просто
Python
1
r = s.post('http://www.mts.ua/ru/online-services/send-sms', data=form.form_values())
ошибок нет, но и смс не приходит

Добавлено через 36 минут
так выглядит работа моего скрипта
HTML5
1
2
3
4
5
6
7
8
9
10
POST /ru/online-services/send-sms HTTP/1.1
Host: www.mts.ua
Content-Length: 295
Accept-Encoding: gzip, deflate, compress
Accept: */*
User-Agent: python-requests/2.2.1 CPython/2.7.6 Windows/7
Cookie: YII_CSRF_TOKEN=a0eb79d7dffd1d34ee5fed516de441d399357d37; PHPSESSID=sle73udsc7s89l4q95ul74ork0
Content-Type: application/x-www-form-urlencoded
 
YII_CSRF_TOKEN=a0eb79d7dffd1d34ee5fed516de441d399357d37&widgetId=messager&MessageForm%5Bnetwork%5D=38066&MessageForm%5Bphone%5D=xxxxxxx&MessageForm%5Bencoding%5D=cyrilic&MessageForm%5Bis_translit%5D=0&MessageForm%5Bmessage%5D=%C3%AF%C3%B0%C3%A8%C3%A2%C3%A5%C3%B2&MessageForm%5BverifyCode%5D=7467
это работа со страницы мтс
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
POST /ru/online-services/send-sms/ HTTP/1.1
Host: www.mts.ua
Content-Length: 966
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://www.mts.ua
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 YaBrowser/14.12.2125.9579 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryzfX8zoBPetaAEXuj
Referer: http://www.mts.ua/ru/online-services/send-sms/
Accept-Encoding: gzip,deflate
Accept-Language: uk,ru;q=0.8,en;q=0.6
Cookie: PHPSESSID=uagfqqldj1b7ce11n7v80debm6; YII_CSRF_TOKEN=8fe2229ee19313224653427412666e6886ab451e; _gat=1; _ga=GA1.2.1871326158.1419255484
 
------WebKitFormBoundaryzfX8zoBPetaAEXuj
Content-Disposition: form-data; name="YII_CSRF_TOKEN"
 
8fe2229ee19313224653427412666e6886ab451e
------WebKitFormBoundaryzfX8zoBPetaAEXuj
Content-Disposition: form-data; name="widgetId"
 
messager
------WebKitFormBoundaryzfX8zoBPetaAEXuj
Content-Disposition: form-data; name="MessageForm[network]"
 
38066
------WebKitFormBoundaryzfX8zoBPetaAEXuj
Content-Disposition: form-data; name="MessageForm[phone]"
 
xxx-xx-xx
------WebKitFormBoundaryzfX8zoBPetaAEXuj
Content-Disposition: form-data; name="MessageForm[encoding]"
 
cyrilic
------WebKitFormBoundaryzfX8zoBPetaAEXuj
Content-Disposition: form-data; name="MessageForm[is_translit]"
 
0
------WebKitFormBoundaryzfX8zoBPetaAEXuj
Content-Disposition: form-data; name="MessageForm[message]"
 
йц
------WebKitFormBoundaryzfX8zoBPetaAEXuj
Content-Disposition: form-data; name="MessageForm[verifyCode]"
 
3807
------WebKitFormBoundaryzfX8zoBPetaAEXuj--
Добавлено через 13 часов 4 минуты
Так понимаю капча вводится неверная
статус возвращается ок, но в контенте страницы написано "Неправильный код проверки."
Не помню, где то уже читал такое, капча релоадится когда я ее скачиваю вроде
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2014, 12:43
Ответы с готовыми решениями:

VK и капча
Python 3 Учу Python, в качестве практики взял модуль VK и ковыряю API ВКонтакта Сталкнулся с ограничением на повторяемые запросы...

Бесконечная капча яндекса
Собственно, пишу простенький скрипт на питоне, которые с помощью urllib2 делает поисковый запрос к яндексу, парсит страницу и выдаёт...

Selenium, МТС Личный кабинет
Здравствуйте. С недавних пор возникли проблемы с входом в личный кабинет МТС. Если все делаю руками, то все ок, а с помощью seltnium -...

9
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
24.12.2014, 12:49
Цитата Сообщение от sanodins Посмотреть сообщение
Не помню, где то уже читал такое, капча релоадится когда я ее скачиваю вроде
Да это стопроцентная информация, что она перезагружается, когда я её качаешь. Я её обходил только через selenium (я скринил экран и вырезал капчу).
1
 Аватар для sanodins
52 / 51 / 15
Регистрация: 27.06.2013
Сообщений: 192
Записей в блоге: 1
24.12.2014, 13:01  [ТС]
В общем я с кучей разных вариантов и проб, сам запутался, все таки правильно было в одной сессии работать без
Python
1
urllib.urlretrieve(src, 'captcha.jpg')
я его в начале пользовал, потом перешел на работу в одной сессии, requests.
Python
1
2
3
4
response = s.get(src, stream=True)
with open('captcha.jpg', 'wb') as out_file:
    shutil.copyfileobj(response.raw, out_file)
del response
в общем сейчас вернул как было плюс исправления помогли, код работает
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# -*- coding: utf-8 -*
 
import Image
import pytesser
import requests  
import lxml.html
import shutil
import re
#from lxml.html import fromstring, tostring
 
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20100101 Firefox/14.0.1',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language':'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
    'Accept-Encoding':'gzip, deflate',
    'Connection':'keep-alive'
}
 
s = requests.session()
doc = lxml.html.fromstring(s.get('http://www.mts.ua/ru/online-services/send-sms/',headers=headers).content)
 
#print s.cookies
 
images = doc.xpath('//img/@src')  
if not images:  
    sys.exit("Found No Images")
src = 'http://www.mts.ua'+ images[1]
print src 
print 'Found %s images' % len(images)
 
#import urllib
#urllib.urlretrieve(src, 'captcha.jpg')
#############################################
 
response = s.get(src, stream=True)
with open('captcha.jpg', 'wb') as out_file:
    shutil.copyfileobj(response.raw, out_file)
del response
 
#############################################
im = Image.open('captcha.jpg')
text = pytesser.image_to_string(im)
print len(text)
print (text)
############################################
 
print re.sub(r'\s', '',text)
text = re.sub(r'\s', '',text)
print len(text)
############################################
phonecod = "38066"
number = 'xxxxxxx'
textsms = u'privet'
 
form = doc.forms[1]
#print form.values()
 
form.fields['MessageForm[network]'] = phonecod
form.fields['MessageForm[phone]'] = number
form.fields['MessageForm[message]'] = textsms 
form.fields['MessageForm[verifyCode]'] = text
#print tostring(form)
#print form.form_values()
 
#print tostring(form)
#print form.fields.keys()
 
r = s.post('http://www.mts.ua/ru/online-services/send-sms/', data=form.form_values())
 
#print r.content
print r.status_code
Добавлено через 6 минут
Единственное то, что pytesser не всегда верно отрабатывает, но все таки пойдет)
0
 Аватар для sanodins
52 / 51 / 15
Регистрация: 27.06.2013
Сообщений: 192
Записей в блоге: 1
24.12.2014, 13:13  [ТС]
раньше их капчу я вообще не мог перекодировать
Изображения
 
0
 Аватар для sanodins
52 / 51 / 15
Регистрация: 27.06.2013
Сообщений: 192
Записей в блоге: 1
24.12.2014, 13:52  [ТС]
Ну и в конце добавил
Python
1
2
3
4
5
tree = lxml.html.fromstring(r.text)
d = tree.xpath('//*[@id="sms-form"]/div[2]/div[2]/div[2]/div[1]/div/div[2]/div/div/text()')
print ''.join(d).encode('ISO-8859-1').decode('utf-8')
d2 = tree.xpath('//*[@id="sms-form"]/div[2]/div[1]/div/div/div[3]/div[2]/div[2]/text()')
print ''.join(d2).encode('ISO-8859-1').decode('utf-8')
только с кодировками вечно траблы, у меня только так в читабельном виде показывает
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
24.12.2014, 13:57
Лучший ответ Сообщение было отмечено sanodins как решение

Решение

sanodins, Можно с помощью requests сразу всю всю страницу декодировать
0
 Аватар для sanodins
52 / 51 / 15
Регистрация: 27.06.2013
Сообщений: 192
Записей в блоге: 1
24.12.2014, 14:20  [ТС]
tsar925, пока не делал так, чесслово и не знал), хотя вру, читал но забыл

Добавлено через 13 минут
Python
1
r.encoding = 'utf-8'
0
 Аватар для sanodins
52 / 51 / 15
Регистрация: 27.06.2013
Сообщений: 192
Записей в блоге: 1
25.12.2014, 22:44  [ТС]
Заметил, если зациклить процесс, то можно уже не декодировать капчу, и не вводить, достаточно одного раза вначале верно ввести
0
 Аватар для sanodins
52 / 51 / 15
Регистрация: 27.06.2013
Сообщений: 192
Записей в блоге: 1
18.01.2015, 10:23  [ТС]
Задумался о алгоритме машинного зрения и о распознавании букв на картинках, читается картинка попиксельно
, выделяется основной фон, выделяются очертания букв на этом фоне, и разбив по отдельности каждую букву,(еще одна проблема, разделить символы если они соприкасаются) натренированный ИИ, пытается распознать какая буква на рисунке. В базе ИИ букв и цифр много, разной величины и шрифта, и если шрифт будет отличатся от того что был в базе при обучении или буквы будут очень сильно искажены (и их явно не тренировали на это искажение) как в примере с капчей мтс выше(искаженные буквы), то разгадать букву не удастся скорее всего.
А если брать просто большие и маленькие буквы и цифры(только одного шрифта), натренировать программу на их распознавание и потом при декодировании капчи, брать отдельный символ из капчи за шаблон, а из своей базы перебирая букву за буквой, пытаться видоизменить символ пока он не совпадет с шаблоном, растягивая и сжимая ее пока она не приобретет тоже искажение как и шаблон? Ну или наоборот брать за шаблон из базы и видоизменять символ капчи пока он не совпадет с шаблоном.
Видоизменять так что бы буква не теряла целостности а приобретала ровность, толщину и форму, пока не совпадет с шаблоном, ну и конечно что бы она не превратилась из буквы А в О.
Конечно человеческое зрение не сравнить с машинным пока, но если человек видит искаженный символ, он скорее всего не находит его в памяти(ну возможно не видел его мозг таких искажений) а на основе шаблонов в памяти пытается угадать на какой из символов-шаблонов он больше всего похож.
0
 Аватар для sanodins
52 / 51 / 15
Регистрация: 27.06.2013
Сообщений: 192
Записей в блоге: 1
18.04.2015, 15:59  [ТС]
Вот интересная программка, нашел месяца два назад, оч.интересная https://play.google.com/store/... calculator
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.04.2015, 15:59
Помогаю со студенческими работами здесь

Python VK API. Капча
Решил покопаться в api вконтакта и создать своего бота. В результате, застопорился на ошибке с капчей. При попытке отправления любого...

Капча слайдер пазл как решать?
Добрый день, на сайте одном добавили капчу, и я пытаюсь ее пройти. Мой код работает, но не с идеальной точностью и иногда выдает неверное...

Браузеры не открывают сайты (МТС 3G - МТС Коннект-4) 3G Модем
Добрый день, прочитал все мануалы по составлению отчетов и логов Проблема заключается следующем пока работает WiFi - все работает...

Скачивание капчи - Сохранённая капча и капча в WebBrowser различаются
Мне надо скачать капчу с этого сайта http://profitcentr.com (нажмите на кнопку вход). Я пытался скачать так: Option Explicit Private...

МТС 4Г
Здравствуйте , у меня случилась такая проблема. Друг сменил мне imei на 4Г модем МТС , сидел на безлимитище , все хорошо. Около месяца...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru