Трекинг почтовых отправлений
Анализ сервисов отслеживания почты. Технология построения интерактивного интерфейса пользователя. Определение стран отправителя и назначения. Распознавание CAPTCHA трекингов почты России и Китая. Добавление и удаление трек-кода в список пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 10.06.2013 |
Размер файла | 5,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
На основе вышеперечисленного, дипломный проект отвечает требованиям безопасности и экологичности.
ЗАКЛЮЧЕНИЕ
Реализованное программное средство позволяет отслеживать местонахождение посылки по её почтовому идентификатору.
В данной работе было выполнено: распознавание CAPTCHA для почты России, Китая; разработано средство для взаимодействия с официальными трекингами стран России, Украины, Беларуси, Сингапура, США, Китая, Гонконга; разработан модуль взаимодействия с пользователем.
В связи с этим программное средство «ПО трекинга почтовых отправлений» может быть рекомендовано пользователям интернета для быстрого получения информации об интересующей их посылке, так как сам процесс довольно прост и не требует особых знаний.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Регулярные выражения, пособие для новичков. [Электронный ресурс] - URL: http://habrahabr.ru/post/115825/ (дата обращения: 14.02.2013 ).
2. CAPTCHA. [Электронный ресурс] - URL: http://ru.wikipedia.org/wiki/CAPTCHA (дата обращения: 15.02.2013).
3. OpenCV шаг за шагом. Преобразование Хафа. [Электронный ресурс] - URL: http://robocraft.ru/blog/computervision/502.html (дата обращения: 14.04.2013).
4. Распознавание некоторых современных CAPTCHA. [Электронный ресурс] - URL: http://habrahabr.ru/post/116222 (дата обращения: 21.04.2013).
5. Декодирование капчи на Python. [Электронный ресурс] - URL: http://www.pvsm.ru/python/12663 (дата обращения: 15.02.2013).
6. Python. [Электронный ресурс] - URL: http://ru.wikipedia.org/wiki/Python (дата обращения: 13.02.2013).
7. Марк Лутц. Изучаем Python, 4-е издание. - Перевод с английского. - СПб.: Символ-Плюс, 2011. - 1280 с - ISBN 978-5-93286-159-2
8. Нужин С. Глава 4. Использование CGI при создании интерактивных интерфейсов. [Электронный ресурс] - URL: http://citforum.ru/database/cnit/4.shtml (дата обращения: 20.02.2013).
9. И. А. Хахаев. Практикум по алгоритмизации и программированию на Python. Учебник. - М.: Альт Линукс, 2010. - 126 с. - (Библиотека ALT Linux). ISBN 978-5-905167-02-7
ПРИЛОЖЕНИЕ А
ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА ПРОГРАММНОЕ СРЕДСТВО
П.А.1 Введение
Наименование программы: "ПО трекинга почтовых отправлений".
Область применения: Сфера обслуживания.
Объект внедрения: Предназначено к внедрению в рабочий процесс ООО "Зеленая планета"
П.А.2 Основания для разработки
Разработка ведется на основании документа «Учебный план для студентов ВУЗа», факультета «Информатика и вычислительная техника», обучающихся по специальности 010503 - «Математическое обеспечение и администрирование информационных систем», в соответствии с которым студенты, заканчивающие ВУЗ, должны предоставить к защите выпускную квалификационную работу, подтверждающую присвоение им квалификации «математик-программист». Предметным основанием является задание на дипломную работу.
П.А.3 Назначение разработки
Функциональное назначение программного средства заключается в предоставлении пользователю данных о местоположении и прохождении регистрируемых почтовых отправлений по её почтовому идентификатору.
Эксплуатационное назначение: данное программное средство предназначено для применения в составе серверного ПО web-серверов.
П.А.4 Требования к программе
П.А.4.1 Требования к функциональным характеристикам
Программа должна обеспечивать возможность выполнения перечисленных ниже функций:
• Распознавание почтового идентификатора;
• определение стран отправителя и назначения;
• распознавание CAPTCHA трекингов почты России и Китая;
• получение данных с серверов почтовых служб и вывод в общую сводную таблицу;
• экспорт полученной информации в форматы *.xls и *.ods;
• регистрация и авторизация пользователя;
• добавление и удаление трек-кода в список пользователя.
П.А.4.2 Требования к надежности
Надежное функционирование программы должно быть обеспечено выполнением пользователем совокупности организационно-технических мероприятий, перечень которых приведен ниже:
• организацией бесперебойного питания технических средств;
• использованием лицензионного программного обеспечения.
Отказы программы возможны вследствие некорректных действий оператора при взаимодействии с операционной системой.
П.А.4.3 Условия эксплуатации
Для функционирования программного продукта необходимо соблюдение всех требований и правил эксплуатации компьютерной техники и программного обеспечения. Такими требованиями могут выступать: диапазон температур, запыленность и загазованность помещения. Дополнительных требований и ограничений не вводится.
Минимальное количество персонала, требуемого для работы программы, должно составлять 1 штатную единицу -- конечный пользователь программы -- оператор.
П.А.4.4 Требования к составу и параметрам технических средств
Требования к составу аппаратных средств компьютера-сервера :
• процессор Intel Core i5 и выше;
• 16 Гб оперативной памяти;
• клавиатура и мышь;
• жесткий диск;
• доступ к сети Интернет.
Требования к составу аппаратных средств компьютера-клиента :
• процессор Intel Pentium 4 и выше;
• 1 Гб оперативной памяти;
• клавиатура и мышь;
• жесткий диск;
• доступ к сети Интернет.
Требования к составу программных средств компьютера- сервера:
• OC Windows (XP SP3, Vista, 7), Linux;
• Apache 2.x.x;
• Python 2.x;
• Sqlite 3.
Требования к составу программных средств компьютера-клиента:
• ОС Windows (XP SP3, Vista, 7), Linux, MacOS, iOS;
• интернет-браузер.
П.А.4.5 Требования к информационной и программной совместимости
Требования к исходным кодам и языкам программирования:
• базовый язык программирования - python;
• среда программирования - текстовой редактор Geany 1.22.
Требования к программным средствам: программа должна работать под управлением ОС Windows (XP/Vista/7), Linux, MacOS,iOS.
П.А.5 Требования к программной документации
Данное программное средство должно поставляться со следующей документацией:
• Техническое задание ГОСТ 19.201-78 ЕСПД;
• руководство системного программиста ГОСТ 19.503-79 ЕСПД;
• руководство программиста 19.504-79 ЕСПД;
• руководство оператора 19.505-79 ЕСПД.
П.А.6 Стадии и этапы разработки
Стадии и этапы разработки программного средства:
• сформулирована постановка задачи (с 02.02.2013 по 5.02.2013);
• проведено изучение предметной области (с 5.02.2013 по 10.04.2013);
• разработка технического задания (с 10.04.2013 по 18.04.2013);
• создание функциональной модели (с 19.04.2013 по 9.05.2013);
• разработка интерфейса программы (с 10.05.2013 по 22.05.2013);
• испытания программы (с 22.05.2013 по 27.05.2013);
• согласование и утверждения технического задания (с 28.05.2013 по 1.06.2013);
• разработка пояснительной записки к данному программному продукту (с 1.06.2013 по 10.06.2013).
П.А.7 Порядок контроля и приемки
Порядок и контроль приемки определяются заведующим кафедрой «ПОВТ и АС» и основаны на демонстрации знаний технологии и умении создавать программные средства для различных предметных областей. Главным требованием к приемке является наличие правильно работающей программы иллюстрируемой тестовым примером и отчета, представленного в печатном виде.
Разработал
студент гр. ВМО - 51 « 18 » апреля 2013 год
Трофименко Ю.В. _________________
ПРИЛОЖЕНИЕ Б
РУКОВОДСТВО СИСТЕМНОГО ПРОГРАММИСТА
П.Б.1 Общие сведения о программе
Областью применения данного программного продукта является сфера обслуживания. Программное средство предназначено к внедрению в рабочий процесс ООО «Зеленая планета».
Разработанное программное средство выполняет перечисленные ниже функции:
• Распознавание почтового идентификатора;
• определение стран отправителя и назначения;
• распознавание CAPTCHA трекингов почты России и Китая;
• получение данных с серверов почтовых служб и вывод в общую сводную таблицу;
• экспорт полученной информации в форматы *.xls и *.ods;
• регистрация и авторизация пользователя;
• добавление и удаление трек-кода в список пользователя.
Для достижения оптимальной производительности необходима конфигурация аппаратных средств клиента: процессор Intel Pentium 4 и выше, объём ОЗУ 1Гб и выше, жесткий диск 120Гб, DirectX совместимый видеоадаптер, любой совместимый источник бесперебойного питания, клавиатура и мышь, доступ к сети Интернет, и для сервера: процессор Intel Core i5 и выше, объём ОЗУ 8Гб и выше, жесткий диск 120Гб, клавиатура и мышь, доступ к сети Интернет.
Для функционирования программного средства на стороне сервера должно быть установлено следующее программное обеспечение:
• OC Windows (XP SP3, Vista, 7), Linux;
• Apache 2.x.x;
• Python 2.x.;
• Sqlite 3.
Для функционирования программного средства на стороне клиента должно быть установлено следующее программное обеспечение:
• ОС Windows (XP SP3, Vista, 7), Linux, MacOS, iOS;
• интернет-браузер.
П.Б.2 Структура программы
Программный комплекс состоит из следующих файлов:
• answer.py -- модуль, отвечающий за распознавание почтового идентификатора и вызов соответствующих функций;
• posts.py -- модуль, в котором содержаться функции отслеживания почтовых отправлений ;
• captcha.py -- модуль, содержащий основные функции для распознавания CAPTCHA;
• brain.py -- модуль, в котором находится словарь опорных точек для распознавания CAPTCHA почты России ;
• savetrack.py -- модуль с функциям сохранения в удобочитаемый формат, а именно в *.xls, *.ods;
• dictcountry.py -- модуль, содержащий словарь с информацией о возможных странах почтовых отправлений.
П.Б.3 Настройка программы
Для настройки программного средства необходимо провести следующие операции:
• убедиться, что все ПО приведённое в П.Б.1 установлено и настроено в соответствии с поставляемой с ним документацией;
• запустить интернет-бразуер и зайти на сайт, разработанного программного средства.
П.Б.4 Проверка программы
Проверка программного средства осуществлялась в процессе разработки при помощи тестов. Тестирование было пройдено успешно.
Результаты тестирования и экспериментов позволяют утверждать, что программный компонент работает корректно.
П.Б.5 Дополнительные возможности
Программное средство помимо основных функций содержит следующие возможности для удобства использования:
• вывод информации о почтовом отправлении без перезагрузки страницы
• вывод сообщений о некорректном вводе данных без перезагрузки страницы
ПРИЛОЖЕНИЕ В
РУКОВОДСТВО ПРОГРАММИСТА
П.В.1 Общие сведения о программе
Областью применения данного программного продукта является сфера обслуживания. Программное средство предназначено к внедрению в рабочий процесс ООО «Зеленая планета».
Разработанное программное средство выполняет перечисленные ниже функции:
• Распознавание почтового идентификатора;
• определение стран отправителя и назначения;
• распознавание CAPTCHA трекингов почты России и Китая;
• получение данных с серверов почтовых служб и вывод в общую сводную таблицу;
• экспорт полученной информации в форматы *.xls и *.ods;
• регистрация и авторизация пользователя;
• добавление и удаление трек-кода в список пользователя.
Для достижения оптимальной производительности необходима конфигурация аппаратных средств клиента: процессор Intel Pentium 4 и выше, объём ОЗУ 1Гб и выше, жесткий диск 120Гб, DirectX совместимый видеоадаптер, любой совместимый источник бесперебойного питания, клавиатура и мышь, доступ к сети Интернет, и для сервера: процессор Intel Core i5 и выше, объём ОЗУ 8Гб и выше, жесткий диск 120Гб, клавиатура и мышь, доступ к сети Интернет.
Для функционирования программного средства на стороне сервера должно быть установлено следующее программное обеспечение:
• OC Windows (XP SP3, Vista, 7), Linux;
• Apache 2.x.x;
• Python 2.x.;
• Sqlite 3.
Для функционирования программного средства на стороне клиента должно быть установлено следующее программное обеспечение:
• ОС Windows (XP SP3, Vista, 7), Linux, MacOS, iOS;
• интернет-браузер.
П.В.2 Характеристика программы
Время ожидания получения информации зависит от времени ответа серверов почтовых служб и распознавания CAPTCHA. Благодаря дружелюбному интерфейсу оно пролетает быстро и незаметно для пользователя.
Также в программном средстве реализован контроль входных данных, проверка части корректности информации происходит на стороне клиента, но основная -- на сервере, данное сочетание позволяет ускорить процесс получения сообщений об ошибке. При возникновении ошибки пользователю выводится предупреждение.
П.В.3 Обращение к программе
Обращение производится интерактивно, через интерфейс интернет-браузера. Программа не поддерживает какие-либо аргументы командной строки.
П.В.4 Входные и выходные данные
Входные данные: почтовый идентификатор, который вводится пользователем.
Выходные данные: информация о почтовом отправлении, которая выводится программным средством в общую сводную таблицу для лучшего восприятия данных пользователем.
П.В.5 Сообщения программисту
В результате работы программы могут возникнуть ошибки или системные сообщения, о которых будет выведено информационное сообщение.
ПРИЛОЖЕНИЕ Г
РУКОВОДСТВО ОПЕРАТОРА
П.Г.1 Назначение программы
П.Г.1.1 Функциональное назначение
Функциональное назначение программного средства заключается в предоставлении пользователю данных о местоположении и прохождении регистрируемых почтовых отправлений по её почтовому идентификатору.
П.Г.1.2 Эксплуатационное назначение
Эксплуатационное назначение: данное программное средство предназначено для применения в составе серверного ПО web-серверов.
П.Г.1.3 Состав функций
Разработанное программное средство выполняет перечисленные ниже функции:
• Распознавание почтового идентификатора;
• определение стран отправителя и назначения;
• распознавание CAPTCHA трекингов почты России и Китая;
• получение данных с серверов почтовых служб и вывод в общую сводную таблицу;
• экспорт полученной информации в форматы *.xls и *.ods;
• регистрация и авторизация пользователя;
• добавление и удаление трек-кода в список пользователя.
П.Г.2 Условия выполнения программы
П.Г.2.1 Минимальный состав аппаратных средств
Для достижения оптимальной производительности необходима конфигурация аппаратных средств клиента: процессор Intel Pentium 4 и выше, объём ОЗУ 1Гб и выше, жесткий диск 120Гб, DirectX совместимый видеоадаптер, любой совместимый источник бесперебойного питания, клавиатура и мышь, доступ к сети Интернет, и для сервера: процессор Intel Core i5 и выше, объём ОЗУ 8Гб и выше, жесткий диск 120Гб, клавиатура и мышь, доступ к сети Интернет.
П.Г.2.2 Минимальный состав программных средств
Для функционирования программного средства на стороне сервера должно быть установлено следующее программное обеспечение:
• OC Windows (XP SP3, Vista, 7), Linux;
• Apache 2.x.x;
• Python 2.x.;
• Sqlite 3.
Для функционирования программного средства на стороне клиента должно быть установлено следующее программное обеспечение:
• ОС Windows (XP SP3, Vista, 7), Linux, MacOS, iOS;
• интернет-браузер.
П.Г.2.3 Требования к персоналу
Конечный пользователь программы (оператор) должен обладать практическими навыками работы с интерфейсом интернет-бразуера.
П.Г.3 Выполнение программы
Сначала пользователь должен убедиться, что все ПО приведённое в П.Г.2.2 установлено и настроено в соответствии с поставляемой с ним документацией. Затем запустить интернет - браузер и перейти на сайт разработанного программного средства. На рисунке П.Г.1 изображено, что увидит пользователь, зайдя на страничку.
Рисунок П.Г.1 - Интерфейс ПО трекинга почтовых отправлений
В поле ввода почтового идентификатора надо ввести свой трек-код и нажать кнопку «Найти», после чего начнётся процесс получения информации с серверов почтовых служб, об этом нам даст знать сообщение «Загрузка...» (рис. П.Г.2).
Рисунок П.Г.2 - Ожидание получения информации о интересующей посылке
Потом перед пользователем выведется желанная информация в общей сводной табличке, что очень удобно для восприятия (рис. П.Г.3).
Рисунок П.Г.3 - Вывод информации пользователю
На рисунке П.Г.3 также можно заметить возможность сохранения информации в удобочитаемый формат, для этого надо кликнуть ПКМ по одной из ссылок «Сохранить в *.xls» или «Сохранить *.ods».
После регистрации и авторизации у пользователя появится возможность создать свой список трек-кодов, с которым отслеживание нужных посылок станет еще легче и быстрее (рис. П.Г.4).
Рисунок П.Г.4 - Список трек-кодов пользователя
П.Г.4 Сообщения оператору
В зависимости от действий пользователя могут возникать ошибки или информационные сообщения, о которых будет выведено соответствующее уведомление.
Рассмотрим возможные сообщения:
• Не удалось распознать почтовый идентификатор (рис. П.Г.5);
Рисунок П.Г.5 - Распознавание почтового идентификатора 123456789CN
• на сервере почтовой службы еще нет информации о данной посылке(рис. П.Г.6);
Рисунок П.Г.6 - Попытка получить информацию о посылке с почтовым идентфикатором 39400939691448
• Если сервер какой-либо почтовой службы временно перестал работать об этом будет оповещено пользователя(рис. П.Г.7);
Рисунок П.Г.7 - Сервер почты Сингапура временно не доступен
• проверка корректности ввода данных при регистрации пользователя(рис. П.Г.8);
Рисунок П.Г.8 - Вывод сообщений о вводе некорректных данных
• проверка корректности ввода данных при авторизации пользователя(рис. П.Г.9);
Рисунок П.Г.9 - Вывод сообщений о вводе некорректных данных
• проверка ввода данных при добавлении нового трек-кода в список пользователя(рис. П.Г.10);
Рисунок П.Г.10 - Вывод сообщений о вводе некорректных данных
• если пользователь не введет ничего и нажмёт «Найти»(рис. П.Г.11);
Рисунок П.Г.11 - Попытка поиска без ввода трек-кода
ПРИЛОЖЕНИЕ Д
АКТ ВНЕДРЕНИЯ
Акт внедрения результатов дипломной работы
«Программное обеспечение трекинга почтовых отправлений», разработанной студентом группы ВМО51
Трофименко Ю.В.
Мы, нижеподписавшиеся, составили настоящий акт о том, что разработанное студентом группы ВМО51 Трофименко Юрием Вадимовичем «Программное обеспечение трекинга почтовых отправлений» прошло испытания, в результате которых показало свою работоспособность и эффективность. После испытаний данная система была внедрена в рабочий процесс ООО "Зеленая планета".
Председатель комиссии: |
||
Должность ФИО |
||
Члены комиссии: |
||
Должность ФИО Должность ФИО |
«___» ___________ 2013г.
ПРИЛОЖЕНИЕ E
ИСХОДНЫЙ КОД МОДУЛЕЙ
П.E.1 Модуль answer.py
#!/usr/bin/python2
# -*- coding: utf8 -*-
import cgi
import cgitb; cgitb.enable()
from dictcountry import country
from posts import Russia,Usa,Singapore
print "Content-Type: text/html" # Определение типа HTML
print # Пустая строка означает окончание передачи заголовков теперь выводим основной текст в формате HTML
print"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">"
print "<html>"
print "<head>"
print" <meta http-equiv=\"Content-Type\" content=\"text/html\"; charset=\"UTF-8\">"
print" <meta http-equiv=\"cache-control\" content=\"no-cache\">"
print" <meta http-equiv=\"pragma\" content=\"no-cache\">"
print" <title>Traking</title>"
print"</head>"
print"<body>"
def is_int(s):
try:
int(s)
return True
except ValueError:
return False
def switch(case,idpost):
if case=="RU":
Russia(idpost)
elif case=="SG":
Singapore(idpost)
print"<br><br>Предполагаемая страна получатель: Russia<br>"
Russia(idpost)
elif case=="US":
Usa(idpost)
print"<br><br>Предполагаемая страна получатель: Russia<br>"
Russia(idpost)
else:
print"пока не поддреживается!<br>"
form = cgi.FieldStorage()
if not form.has_key("id"): #А есть ли такие поля?
print "<H1>Ошибка!</H1>"
print "Введите почтовый идентификатор!"
else:
idpost = form["id"].value.replace(" ","")
if (len(idpost)==13 and is_int(idpost)==False):
#print"Международный идентификатор!<br>"
print"Почтовый международный идентификатор: "+idpost+"<br>"
print"Страна отправитель: " + country[idpost[-2:13]]
switch(idpost[-2:13],idpost)
else:
print"Почтовый внутренний идентификатор: "+idpost+"<br>"
if (len(idpost)==20 or len(idpost)==10) and is_int(idpost)==True:
print"Страна: USA<br>"
Usa(idpost)
elif len(idpost)==14 and is_int(idpost)==True:
print"Страна: Russia<br>"
Russia(idpost)
elif len(idpost)==21 and is_int(idpost)==False:
print"Страна: Singapore<br>"
Singapore(idpost)
else:
print"Ошибка! Проверьте правильность введенного Вами почтового идентификатора!"
print"</body>"
print"</html>"
П.E.2 Модуль posts.py
#!/usr/bin/python2
# -*- coding: UTF-8 -*-
from dictcountry import country
import urllib,urllib2,re,time,threading,socket
import cgitb; cgitb.enable()
from brain import maska
from PIL import Image
from captcha import *
socket.setdefaulttimeout(5)
temp_path = "/srv/http/temp/"
################################ РОССИЯ ###################################
def search (x,y,colors):
for i in range(len(maska)/3):
truenumber = '*'
for j in range(len(maska[i,'y'])):
if (x+maska[i,'x'][j]>69 or y+maska[i,'y'][j]>22):
truenumber = '*'
break
if (colors[(x+(maska[i,'x'][j])),(y+maska[i,'y'][j])] == 1):
truenumber = maska[i,'number']
else:
truenumber = '*'
break
if (truenumber != '*'):
return int(truenumber),x
break
def GetCaptchaCodeRussia():
try:
f = urllib2.urlopen("http://www.russianpost.ru/rp/servise/ru/home/postuslug/trackingo").read()
if (len(f)<500 and f.count("onload")>0):
key =re.compile("<input id=\"key\" name=\"key\" value=\"(.*?)\"/>",re.DOTALL).findall(f)
headers = {"User-Agent" : "Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0"}
req = urllib2.Request('http://www.russianpost.ru/rp/servise/ru/home/postuslug/trackingpo',urllib.urlencode({'key': key[0]}),headers)
urllib2.urlopen(req)
f = urllib2.urlopen("http://www.russianpost.ru/rp/servise/ru/home/postuslug/trackingpo").read()
CaptchaKey = re.compile("id='CaptchaId' value='(.*?)'>",re.DOTALL).findall(f)[0]
#print CaptchaKey
urllib.URLopener().retrieve("http://www.russianpost.ru/CaptchaService/CaptchaImage.ashx?Id="+CaptchaKey, temp_path+"captchaRussia.png")
except urllib2.HTTPError, error:
print"<p style=\"color:#FF0000\">Сайт почты России временно не доступен! Попробуйте позднее.</p>"
return False
except urllib2.URLError, error:
print"<p style=\"color:#FF0000\">Сайт почты России временно не доступен! Попробуйте позднее.</p>"
return False
im = Image.open(temp_path+"captchaRussia.png")
color = {}
for x in range(im.size[0]):
for y in range(im.size[1]):
pix = im.getpixel((x,y))
#print pix,"<br>"
if pix == (255, 255, 255, 255):
color[x,y] = 0
else:
color[x,y] = 1
captcha={}
# Определяем что написано на капче
for y in range(im.size[1]):
for x in range(im.size[0]):
if (color[x,y] == 1):
answer = search(x,y,color)
if answer:
captcha[answer[1]] = answer[0]
CaptchaCode = ''.join([str(x[1]) for x in sorted(captcha.items(),key=lambda(x): x[0])])
return CaptchaKey,CaptchaCode
def Russia(ItemRussia):
Captcha = GetCaptchaCodeRussia()
if Captcha == False:
return False
headers = {"User-Agent" : "Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0"}
paramsRussia = urllib.urlencode({'searchsign': 1,'BarCode': ItemRussia, 'CaptchaId': Captcha[0], 'InputedCaptchaCode': Captcha[1]})
try:
req = urllib2.Request('http://www.russianpost.ru/resp_engine.aspx?Path=rp/servise/ru/home/postuslug/trackingpo', paramsRussia,headers)
u = urllib2.urlopen(req).read()
except urllib2.HTTPError, error:
print"<p style=\"color:#FF0000\">Сайт почты России временно не доступен! Попробуйте позднее.</p>"
return False
except urllib2.URLError, error:
print"<p style=\"color:#FF0000\">Сайт почты России временно не доступен! Попробуйте позднее.</p>"
return False
data = re.compile("<tr align=\".*?\">.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?</tr>",re.DOTALL).findall(u)
if len(data)==0:
print"<p style=\"color:#FF0000\">О данной посылке на почте России пока нет иформации, убедитесь в правильности введеного почтового идентификатора или попробуйте позже!</p>"
return True
infoRussia = []
row = 0
for track in data:
infoRussia.append([])
print" <tr align=\"center\">"
print"<td><img src=\"/images/country/ru.png\" width=\"20\" height=\"20\"/></td>"
infoRussia[row].append("Russia")
print"<td>"+track[1]+"</td>"
infoRussia[row].append(track[1])
if track[0] != "Обработка":
print"<td align=\"left\">"+track[0]+"</td>"
infoRussia[row].append(track[0])
else:
print"<td align=\"left\">"+track[4]+"</td>"
infoRussia[row].append(track[4])
print"<td>"+track[3]+"</td>"
infoRussia[row].append(track[3])
print"<td>"+track[5]+"</td>"
infoRussia[row].append(track[5])
print"<td>"+track[6]+"</td>"
infoRussia[row].append(track[6])
print"</tr>"
row+=1
return infoRussia
################################# США ########################################
def Usa(ItemUSA):
paramsUSA = urllib.urlencode({'tLabels': ItemUSA})
headers = {"User-Agent" : "Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0"}
try:
req = urllib2.Request('https://tools.usps.com/go/TrackConfirmAction.action', paramsUSA,headers)
u = urllib2.urlopen(req,paramsUSA).read()
except urllib2.HTTPError, error:
print"<p style=\"color:#FF0000\">Сайт почты США временно не доступен! Попробуйте позднее.</p>"
return False
except urllib2.URLError, error:
print"<p style=\"color:#FF0000\">Сайт почты США временно не доступен! Попробуйте позднее.</p>"
return False
data = re.compile("<div class=\"td-status\">.*?<p>(.*?)</p>.*?</div>.*?<div class=\"td-date-time\">.*?<p.*?>(.*?)</p>.*?</div>.*?<div class=\"td-location\">.*?<p.*?>(.*?)</p>.*?</div>",re.DOTALL).findall(u)
#~ r = re.compile("<div class=\"td-service\">(.*?)</div>.*?<div class=\"td-status\">(.*?)</div>.*?<div class=\"td-date-time\">(.*?)</div>.*?<div class=\"td-location\">(.*?)</div>.*?<div class=\"features-p\">(.*?)</div>",re.DOTALL)
if len(data)==0:
print"<p style=\"color:#FF0000\">О данной посылке на почте США пока нет иформации, убедитесь в правильности введеного почтового идентификатора или попробуйте позже!</p>"
return True
infoUSA = []
row = 0
for track in data:
infoUSA.append([])
print" <tr align=\"center\">"
print"<td><img src=\"/images/country/us.png\" width=\"20\" height=\"20\"/></td>"
infoUSA[row].append("Usa")
print"<td>"+track[1]+"</td>"
infoUSA[row].append(track[1])
print"<td align=\"left\">"+track[0]+"</td>"
infoUSA[row].append(track[0])
print"<td>"+track[2]+"</td>"
infoUSA[row].append(track[2])
print"<td>-</td>"
infoUSA[row].append("-")
print"<td>-</td>"
infoUSA[row].append("-")
print"</tr>"
row+=1
return infoUSA
П.E.3 Модуль captcha.py
#!/usr/bin/python2
# -*- coding: UTF-8 -*-
from cv import *
import os,time,cap
from PIL import Image
from operator import itemgetter
from pyfann import libfann
def timeit(f):
def timed(*args, **kw):
ts = time.time()
result = f(*args, **kw)
te = time.time()
print '%r: %2.4f sec' % \
(f.__name__, te-ts)
return result
return timed
ann_file = "/srv/http/temp/ann/china.net"
train_file = "/srv/http/temp/ann/china.train"
segment_dir = "/srv/http/temp/trainsegments/"
segnow_dir = "/srv/http/temp/segments/"
charset = "2345678abcdefgmnpwxy"
segW = 18
segH = 18
num_input = segW*segH
num_output = len(charset)
num_neurons_hidden = num_input/3
desired_error = 0.00001
max_iterations = 10000
iterations_between_reports = 20
connection_rate = 1.0
learning_rate = 0.3
#создания файла для обучения нейронной сети
@timeit
def Create_train_file(segments_dir,train_file,num_input,num_output):
segments = os.listdir(segments_dir)
f = open(train_file, "w")
f.write("%d %d %d\n" % (len(segments), num_input, num_output))
for name in segments:
image = Image.open(segments_dir + name).convert("P")
for x in range(image.size[0]):
for y in range(image.size[1]):
f.write("%d " % int(image.getpixel((x,y))/159.375 - 2))
f.write("\n")
n = charset.index(os.path.splitext(name)[0][0])
f.write("-1 " * n + "1" + " -1" * (num_output - n - 1) + "\n")
f.close()
print "Samples: %d" % len(segments)
print "Input: %d" % num_input
print "Output: %d" % num_output
#процесс создания и обучения нейронной сети
ann = libfann.neural_net()
ann.create_sparse_array(connection_rate, (num_input, num_neurons_hidden, num_output))
ann.set_learning_rate(learning_rate)
ann.set_activation_function_hidden(libfann.SIGMOID_SYMMETRIC_STEPWISE)
ann.set_activation_function_output(libfann.SIGMOID_SYMMETRIC_STEPWISE)
ann.train_on_file(train_file, max_iterations, iterations_between_reports, desired_error)
ann.save(ann_file)
#~ Create_train_file(segment_dir,train_file,num_input,num_output)
#использование обученной сети для распознавания сегментов капчи
#~ @timeit
def Magic(segments,ann_file,charset):
answer = []
ann = libfann.neural_net()
ann.create_from_file(ann_file)
for segment in segments:
lst = []
for x in range(segment.size[0]):
for y in range(segment.size[1]):
lst.append(int(segment.getpixel((x,y))/159.375 - 2))
res = ann.run(lst)
answer.append(charset[res.index(max(res))])
return "".join(answer)
#~ print Magic(segnow_dir,ann_file,charset)
#разделение на сегменты и распознавание
#~ @timeit
def segment(path):
image = Image.open(path).convert("P")
temp = Image.new("P",image.size,0)
for x in range(image.size[0]):
for y in range(image.size[1]):
if image.getpixel((x,y)) == 0:
temp.putpixel((x,y),255)
temp = temp.crop((2,2,83,33))
imgcv = CreateImageHeader(temp.size, IPL_DEPTH_8U, 1)
SetData(imgcv, temp.tostring())
dilate = CloneImage(imgcv)
element = CreateStructuringElementEx( 2, 2, 1, 1, CV_SHAPE_RECT )
Dilate(imgcv, dilate,element,1)
temp = CloneImage(dilate)
components = cap.findCCs(dilate, 0, lambda col: col <= 125, lambda comp: comp[0] <= 25)
components = cap.joinCCs(components, cap.rectsIntersectH)
parts = cap.partsFromnSegs5(components)
components = cap.spltCCs(components, parts, projRadius=4, thresh=1)
SaveImage(segnow_dir+"comsz2.png",cap.drawComponents(temp, components))
segments = map(lambda comp: comp[3], components)
pisegments = []
#~ for i in range(len(segments)):
for segment in segments:
pi = Image.fromstring("P", GetSize(segment), segment.tostring())
pisegments.append(pi.resize((segW,segH)))
return Magic(pisegments,ann_file,charset)
#~ print segment("/home/invictus/Desktop/newCaptchaChina/2g65w.jpg")
#тестирование кол-ва распознаваемых каптча
@timeit
def Testing(path_examples):
goods=0
bad=0
captchas = os.listdir(path_examples)
for name in captchas:
res = segment(os.path.join(path_examples, name))
print "\nres: "+res+"\nreal: " + name[:-4]
print os.path.join(path_examples, name)
if (res == name[:-4]):
goods +=1
else:
bad +=1
print "----------------------"
print "Goods: %d --> %f" % (goods, (goods*100/(bad+goods)))+"%"
print "Bad: %d" % bad
print "All: %d" % (bad+goods)
П.E.4 Модуль brain.py
#!/usr/bin/python2
maska={}
maska[0,'number']='0'
maska[0,'x']=5,6,7,8,7,8,7,8,6,5,2,1,-1,-1,-2,-2,-3,-2,-1,-2,4,1,4,1,4,1
maska[0,'y']=0,1,2,3,5,7,10,12,13,15,15,14,14,12,12,10,8,5,3,2,4,4,11,11,7,7
maska[1,'number']='1'
maska[1,'x']=3,6,6,6,6,6,8,8,8,5,2,-1,-1,-1,1,1,1,1,0,0
maska[1,'y']=0,0,3,6,9,11,11,14,16,16,16,16,14,11,11,9,7,4,4,2
maska[2,'number']='1'
maska[2,'x']=3,6,6,6,6,7,7,4,2,-1,-1,-1,1,1,1,1,0
maska[2,'y']=0,0,3,6,10,10,14,14,14,14,12,10,10,8,6,3,2
maska[3,'number']='3'
maska[3,'x']=3,6,9,9,8,7,7,9,9,10,9,10,8,7,5,3,1,-1,-1,0,0,2,4,5,4,2,1,1,2,3,0,-1,0
maska[3,'y']=0,0,0,1,3,4,6,6,8,10,12,13,14,16,15,16,16,16,14,13,11,12,12,10,9,8,9,7,5,4,4,3,2
maska[4,'number']='5'
maska[4,'x']=3,7,7,5,5,2,3,6,7,6,7,6,7,7,5,4,3,1,0,-1,1,-2,-2,2,3,0,-2,-1,-1,-1
maska[4,'y']=0,0,1,2,4,3,5,5,6,7,9,10,11,12,13,14,13,14,14,10,10,9,8,8,9,8,6,5,3,1
maska[5,'number']='2'
maska[5,'x']=3,6,8,7,8,8,7,7,5,4,6,9,8,7,8,5,2,-1,-3,-2,-1,-1,1,0,2,1,3,3,0,-2,-2,-1
maska[5,'y']=0,0,1,2,3,5,6,7,8,10,10,10,11,12,14,14,14,14,14,12,11,10,9,8,7,6,5,3,5,6,4,2
maska[6,'number']='9'
maska[6,'x']=3,6,5,8,9,8,8,8,7,7,5,5,3,1,-1,0,1,2,1,-1,-1,-3,-2,-3,-2,-3,-1,-1,2,4,4,2,2,4
maska[6,'y']=0,0,1,2,4,5,7,9,11,14,15,17,17,17,17,15,13,12,11,12,10,10,8,6,4,3,2,1,5,5,8,8,6,7
maska[7,'number']='4'
maska[7,'x']=2,5,5,5,5,5,6,6,5,5,5,3,0,0,0,-2,-4,-2,-1,0,0,0,0,-2,-1,-1
maska[7,'y']=0,0,2,4,6,8,9,11,10,13,14,14,14,12,11,11,11,8,6,4,5,7,8,3,2,1
maska[8,'number']='2'
maska[8,'x']=2,4,6,6,6,6,5,8,9,8,9,7,4,1,-1,-3,-2,0,-1,1,0,2,1,3,4,4,2,3,1,-1,-2,-2,-1,1
maska[8,'y']=0,0,0,1,5,7,11,13,14,15,16,16,16,16,16,16,14,13,12,11,10,9,8,7,5,3,3,4,6,5,6,3,2,1
maska[9,'number']='8'
maska[9,'x']=1,3,5,6,7,6,7,5,7,8,8,8,6,7,6,4,3,1,1,-1,-1,0,0,-2,-1,2,4,2,3
maska[9,'y']=1,0,0,2,3,5,6,7,8,9,11,13,13,14,15,14,15,15,14,13,11,9,5,2,1,4,5,6,5
maska[10,'number']='6'
maska[10,'x']=2,5,4,4,3,4,5,6,6,7,7,7,6,5,4,3,0,-1,-2,-2,-4,-3,-4,-3,-3,-1,-2,-1,1,3,2,3,2,1,0
П.E.5 Модуль savetrack.py
#!/usr/bin/python2
# -*- coding: UTF-8 -*-
import xlwt,ooolib
#from datetime import datetime
def save_to_xls(nametrack,info):
font0 = xlwt.Font()
font0.name = 'Times New Roman'
font0.colour_index = 0
font0.bold = True
style0 = xlwt.XFStyle()
style0.font = font0
wb = xlwt.Workbook(encoding='UTF-8')
ws = wb.add_sheet(nametrack)
ws.write(0, 0, 'Страна', style0)
ws.write(0, 1, 'Дата', style0)
ws.write(0, 2, 'Операция', style0)
ws.write(0, 3, 'Название ОПС', style0)
ws.write(0, 4, 'Вес(кг.)', style0)
ws.write(0, 5, 'Объявл. ценность (руб.)', style0)
for row in xrange(0,len(info)):
for col in xrange(0,len(info[row])):
ws.write(row+1,col,info[row][col])
wb.save("/srv/http/temp/"+nametrack+".xls")
def save_to_ods(nametrack,info):
doc = ooolib.Calc(nametrack)
doc.set_cell_property('bold', True)
doc.set_cell_value(1, 1,"string","Страна".decode("UTF-8"))
doc.set_cell_value(2, 1,"string","Дата".decode("UTF-8"))
doc.set_cell_value(3, 1,"string","Операция".decode("UTF-8"))
doc.set_cell_value(4, 1,"string","Название ОПС".decode("UTF-8"))
doc.set_cell_value(5, 1,"string","Вес(кг.)".decode("UTF-8"))
doc.set_cell_value(6, 1,"string","Объявл. ценность (руб.)".decode("UTF-8"))
doc.set_cell_property('bold', False)
for row in xrange(0,len(info)):
for col in xrange(0,len(info[row])):
doc.set_cell_value(col+1, row+2, "string", info[row][col].decode("UTF-8"))
doc.save("/srv/http/temp/"+nametrack+".ods")
П.E.6 Модуль dictcountry.py
#!/usr/bin/python2
# -*- coding: UTF-8 -*-
country={}
country['AC']="Azores"
country['AD']="Andorra"
country['AE']="Utd.Arab.Emir."
country['AF']="Afghanistan"
country['AG']="Antigua/Barbads"
country['AI']="Anguilla"
country['AL']="Albania"
country['AM']="Armenia"
country['AN']="Netherland Antilles"
country['AO']="Angola"
country['AP']="Asia Pacific Ctries"
country['AQ']="Antarctica"
country['AR']="Argentina"
country['AS']="Samoa,American"
country['AT']="Austria"
country['AU']="Australia"
country['AW']="Aruba"
country['AZ']="Azerbaijan"
country['BA']="Bosnia-Herz."
country['BB']="Barbados"
country['BD']="Bangladesh"
country['BE']="Belgium"
country['BF']="Burkina-Faso"
country['BG']="Bulgaria"
country['BH']="Bahrain"
country['BI']="Burundi"
country['BJ']="Benin"
country['BM']="Bermuda"
country['BN']="Brunei Darussalam"
country['BO']="Bolivia"
country['BR']="Brazil"
country['BS']="Bahamas"
country['BT']="Bhutan"
country['BV']="Bouvet Island"
country['BW']="Botswana"
country['BY']="Belarus"
country['BZ']="Belize"
country['CA']="Canada"
country['CC']="Cocos Islands"
country['CD']="Congo Dem.Rep."
country['CF']="Central Afr.Rep"
country['CG']="Congo"
country['CH']="Switzerland"
country['CI']="Ivory Coast"
country['CK']="Cook Islands"
country['CL']="Chile"
country['CM']="Cameroon"
country['CN']="China"
country['CO']="Colombia"
country['CR']="Costa Rica"
country['CU']="Cuba"
country['CV']="Cape Verde"
country['CX']="Christmas Island"
country['CY']="Cyprus"
country['CZ']="Czech Republic"
country['DE']="Germany"
country['DG']="Diego Garcia"
country['DJ']="Djibouti"
country['DK']="Denmark"
country['DM']="Dominica"
country['DO']="Dominican Rep."
country['DZ']="Algeria"
country['EC']="Ecuador"
country['EE']="Estonia"
country['EG']="Egypt"
country['ER']="Eritrea"
country['ES']="Spain"
country['ET']="Ethiopia"
country['FI']="Finland"
country['FJ']="Fiji"
country['FK']="Falkland Islnds"
country['FM']="Micronesia"
country['FO']="Faroe Island"
country['FR']="France"
country['GA']="Gabon"
country['GB']="United Kingdom"
country['GD']="Grenada"
country['GE']="Georgia"
country['GF']="French Guinea"
Размещено на Allbest.ru
Подобные документы
Общие характеристики и стандарты электронной почты. Почтовые программы, регистрация почтовых ящиков, этикет, безопасность и технология функционирования электронной почты. Получение и отправка сообщений, адресная книга и процедура работы с вложениями.
курсовая работа [704,1 K], добавлен 26.08.2010История появления электронной почты как технологии и сервиса по пересылке электронных сообщений между пользователями компьютерной сети. Система организации почтовых адресов. Принцип работы электронной почты, ее основные преимущества и недостатки.
презентация [842,6 K], добавлен 03.10.2016Понятие электронной почты. Сравнительная характеристика почтовых систем и оценка эффективности. Обучение персонала использованию электронной почты. Защита персональных данных. Преступления в сфере компьютерной деятельности. Дистанционное обучение.
дипломная работа [77,6 K], добавлен 23.06.2012Основные и дополнительные функции почтовых клиентов. Специальные функции средств и сравнительная оценка почтовых программ. Почтовый клиент Becky, Mozilla. Технология функционирования электронной почты, средства управления и возможности почтового ящика.
курсовая работа [440,7 K], добавлен 07.12.2010Понятие электронной почты, история появления и развития технологии, ее достоинства и особенности. Процесс получения адреса электронной почты у провайдера. Структура письма, способы представления адреса. Краткий обзор почтовых программ. Системы кодировки.
курсовая работа [47,4 K], добавлен 20.12.2010Понятие и принцип работы электронной почты, структура и элементы данной системы. Протоколы и форматы сообщений. Преимущества и недостатки почтовых сервисов, на сегодняшний день, возможности их применения в различных сферах деятельности и перспективы.
курсовая работа [423,2 K], добавлен 20.12.2015Отображение на плоскости точек из многомерного пространства, интерактивное распознавание отдельных классов образов в качестве объекта разработки программного продукта. Концептуальная модель предметной области. Классы и объекты интерфейса пользователя.
дипломная работа [1,5 M], добавлен 10.06.2013Сущность понятия электронной почты, ее возможности в современной сети Интернет. Основные угрозы, мешающие работе этой формы электронной коммуникации. Особенности способов информационной защиты, принципы корректного использования электронной почты.
контрольная работа [20,0 K], добавлен 28.12.2012Общее понятие о DHCP (протоколе динамического конфигурирования адресов). Порядок настройки сервера и доставки почты. Описание конфигурации в специальном файле. Особенности процесса отправки и приема сообщений. Режимы работы программного интерфейса.
презентация [138,5 K], добавлен 25.10.2013Базовые понятия систем электронной почты. Протокол обмена электронной почтой. Релеи, маршрутизация почты. Основные угрозы почтовой службы. Безопасность почтового сервера. Защита от вредоносного программного обеспечения. Средства динамического скрининга.
курсовая работа [2,3 M], добавлен 28.01.2016