Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » Проверка статуса готовности загранпаспорта на сайте ФМС [RSS Feed]

#1 Фев. 2, 2015 10:30:51

duckkon
Зарегистрирован: 2015-02-02
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка статуса готовности загранпаспорта на сайте ФМС

Всем доброго времени суток!

Решил начать изучение Python с решения практических задач, но застрял в дебрях HTTP
Я пытаюсь написать скрипт, который будет лезть на страницу http://fmsmo.ru/internet-priemnaya/checking_docs и проверять на ней статус готовности загранпаспорта. На данный момент намертво упёрся в капчу: картинка, которую скрипт скачивает, не принимается сайтом. Ума не приложу, что я делаю не так. Вот код:

# coding=utf-8
import urllib
import urllib2
import cookielib
import sys
cookieJar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
urllib2.install_opener(opener)
#Подозреваю, что нет особого смысла открывать саму страницу. Сразу загрузим капчу
#page = urllib2.urlopen('http://fmsmo.ru/internet-priemnaya/checking_docs')
try:
    captcha = urllib2.urlopen('http://fmsmo.ru/captcha')
except:
    print("Connection error")
    sys.exit()
with open('captcha.png', mode='wb') as local_file:
    local_file.write(captcha.read())
# Пока смотрим скачанный png вручную, потом прикручу графику на Tk
captcha_value = raw_input("Please enter captcha: ")
data = {
    'num': '175000003',
    'type': '1',
    'captcha': captcha_value
    }
data = urllib.urlencode(data)
print(data)
headers = {
    'Host': 'fmsmo.ru',
    'Connection': 'keep-alive',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0',
    'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Referer': 'http://fmsmo.ru/internet-priemnaya/checking_docs',
    'Accept-Language': 'en-US,en;q=0.5',
    'Cookie': cookieJar._cookies['fmsmo.ru']['/']['PHPSESSID'].value #Читаем идентификатор сессии из Cookie
    }
print(headers)
# Отправляем POST-запрос, содержащий значение капчи и идентификатор сессии
post = urllib2.Request("http://fmsmo.ru/checking_docshandler", data, headers)
response = urllib2.urlopen(post)
the_page = response.read()
#Пока паспорт не готов, ответ должен быть "-1" - "Не найдено". Но приходит "-2" - неправильная капча
print(the_page)

Буду очень благодарен за любую помощь!

Офлайн

#2 Фев. 4, 2015 21:30:13

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Проверка статуса готовности загранпаспорта на сайте ФМС

duckkon
На данный момент намертво упёрся в капчу: картинка, которую скрипт скачивает, не принимается сайтом.

В браузере откройте инструменты разработчика, посмотрите что вам приходит, куки, сессии и прочее, чего-то не хватает потому как:

duckkon
Подозреваю, что нет особого смысла открывать саму страницу. Сразу загрузим капчу

И еще:
duckkon
Пока смотрим скачанный png вручную, потом прикручу графику на Tk

Капча слишком простая, можно автоматизировать с гарантированным распознованием.

duckkon
import urllib
import urllib2
import cookielib

requests — проще и понятнее.

Офлайн

  • Начало
  • » Network
  • » Проверка статуса готовности загранпаспорта на сайте ФМС[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version