:: Visual Foxpro, Foxpro for DOS
http://egrul.nalog.ru/
dos32
Автор

Сообщений: 1017
Откуда: Ленинград
Дата регистрации: 15.01.2008
во, наткнулся на старый добрый бизнес-пак ... понравилась одна фишка ...
в результате нашел egrul.nalog.ru
по сути удобно в базе по контрагенту только ИНН ввести и кнопкой заполучить оттуда название,адрес,ОГРН и т.д.

никто на фоксе такой вариант не разбирал ?
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
AngelOKES

Сообщений: 828
Дата регистрации: 08.02.2012
поиском пробовали пользоваться? здесь уже это обсуждалось...
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
Pliskin

Сообщений: 2959
Откуда: Новосибирск
Дата регистрации: 19.11.2003
здесь
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
Равиль

Сообщений: 6549
Откуда: Уфа
Дата регистрации: 01.08.2003
набросал такую форму :

[attachment 13225 form.png]

Сначала при открытии формы идет поиск на сайте СКБ Контур focus.kontur.ru
(там не нужна капча, но результат поиска не структурированный),
затем можно поискать на сайте ФНС egrul.nalog.ru
(довольно часто меняют что-нибудь - это видно по описаниям обновлений того же бизнеспака)

Фрагменты кода :

*----------------
*!* Procedure Init
*----------------
Lparameters m.tcTable && курсор источник
With Thisform
.txtINN.ControlSource = m.tcTable + ".INN"
.txtName.ControlSource = m.tcTable + ".cName"
*!* и т.д.
.cINN = Alltrim(.txtINN.Value)
.Poisk_Kontur() && сразу ищем в контуре, капча там не нужна
.GetCaptcha() && считываем капчу
Endwith
*----------------
*!* Procedure Poisk_Kontur
*----------------
With Thisform
If Empty(.txtINN.Value)
Return
Endif
.cServiceName = 'KONTUR.RU' && Поиск на контуре
.cServiceURL = 'https://focus.kontur.ru' && сайт
.Poisk()
Endwith
*----------------
*!* Procedure Poisk_Nalog
*----------------
With Thisform
If Empty(.txtINN.Value)
Return
Endif
.cServiceName = 'NALOG.RU' && имя сервиса
.cServiceURL = 'http://egrul.nalog.ru' && сайт
.Poisk()
Endwith
*----------------
*!* Procedure GetCaptcha
*----------------
* в основе код Евгения Банщикова (FoxClub.ru)
Local m.lOk, m.lcImgFile, m.lcTMP_DIR
m.lcTMP_DIR = Addbs(Sys(2023))
*!* m.lcImageFile = Addbs(Fullpath(''))+'def.png'
m.lcImageFile = m.lcTMP_DIR+'def.png'
m.lOk=.F.
With Thisform
.oXMLHTTP = Createobject("MSXML2.XMLHTTP")
With .oXMLHTTP
.Open("GET", "http://egrul.nalog.ru/i/def.png")
.setRequestHeader("Accept", "image/png,image/*;q=0.8,*/*;q=0.5")
.setRequestHeader("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3")
.setRequestHeader("Accept-Encoding", "gzip, deflate")
.setRequestHeader("Connection", "keep-alive")
.Send()
Wait Window " .. Ждите .. " Noclear Timeout 0.1
Do While .readyState <> 4
Wait Window " .. Ждите .. " Noclear Timeout 0.1
DoEvents
Enddo
If .statustext = "OK"
= Strtofile(.responseBody, m.lcImageFile)
m.lOk = .T.
Endif
Wait Clear
Endwith
*!* если vfp7 и ниже - преобразуем картинку из PNG в JPG
If Version(5)<=700
Local loGP, lnH, lnB
loGP = Newobject('GdiPlus','GdiPlus.PRG')
With loGP
.LoadFromFile(m.lcImageFile)
lcImageFile = Forceext(m.lcImageFile,'jpg')
lnH = .ImageHeight()
lnB = .ImageWidth()
.CopyToFile(m.lcImageFile, 100, m.lnb, m.lnh, 7)
Endwith
Endif
Clear Resources
.imgCaptcha.Picture = ""
.imgCaptcha.Picture = m.lcImageFile
.txtCaptcha.Value = ""
Endwith
Return m.lOk
*----------------
*!* Procedure GetHTML
*----------------
* в основе код Евгения Банщикова (FoxClub.ru)
Lparameters tcInn, tcCaptcha
Local lcParam, lOk
lOk = .F.
With Thisform
Do Case
Case .cServiceName = 'NALOG.RU'
m.lcParam = ;
[num=]+Alltrim(m.tcInn);
+[&]+[Name=];
+[&]+[address=];
+[&]+[Region=%C2%F1%E5+%F1%F3%E1%FA%E5%EA%F2%FB+%D0%D4];
+[&]+[Date=];
+[&]+[action=%C8%F1%EA%E0%F2%FC];
+[&]+[ccc=]+Alltrim(m.tcCaptcha) && редактировано 15.03.2012
*!* +[&]+[cc=]+Alltrim(m.tcCaptcha) - поменяли имя поля
Case .cServiceName = 'KONTUR.RU'
m.lcParam = '/search?query='+Alltrim(m.tcInn);
+[&]+[Region=]
Endcase
.oXMLHTTP = Createobject("MSXML2.XMLHTTP")
With .oXMLHTTP
If Thisform.cServiceName = 'KONTUR.RU'
.Open("GET", Thisform.cServiceURL+m.lcParam)
.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
.setRequestHeader("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3")
.setRequestHeader("Accept-Encoding", "gzip, deflate")
.setRequestHeader("Connection", "keep-alive")
.Send()
Else
.Open("POST", Thisform.cServiceURL)
.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
.setRequestHeader("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3")
.setRequestHeader("Accept-Encoding", "gzip, deflate")
.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
.setRequestHeader("Content-length", Transform(Len(m.lcParam)))
.setRequestHeader("Connection", "keep-alive")
.Send(m.lcParam)
Endif
Wait Window " .. Ждите .. " Noclear Timeout 0.1 && Без этого иногда намертво виснем
Do While .readyState <> 4
Wait Window " .. Ждите .. " Noclear Timeout 0.1
DoEvents
Enddo
If .statustext = "OK"
m.lOk=.T.
Endif
Endwith
Endwith
Return m.lOk
*!* *----------------
*!* Procedure Poisk()
*!* *----------------
*!* в основе код Евгения Банщикова (FoxClub.ru)
Wait Window " Выполняется запрос .. ждите .. " Nowait Noclear
Local m.lcTable, m.lcBody, m.loHTML
Local m.lcINN, m.lcCaptcha
m.lcINN = Alltrim(.txtINN.Value)
m.lcCaptcha = Alltrim(.txtCaptcha.Value)
With Thisform
.LockScreen=.T.
If .GetHTML(m.lcINN, m.lcCaptcha)
m.loHTML = Createobject('htmlfile')
Do Case
Case .cServiceName = 'NALOG.RU'
*******************************
m.lcBody = .oXMLHTTP.responseBody
If m.Otladka
Local m.tmp_txt
m.tmp_txt = m.lcBody
=Strtofile(m.tmp_txt,"Nalog_ru.txt")
Endif
If [id="Result"]$m.lcBody
_Cliptext = m.lcBody
m.loHTML.Write(_Cliptext)
m.lcTable = loHTML.body.Document.getElementById('result')
.txtName.Value = m.lcTable.Rows(0).cells(1).innerTEXT
.txtAdres.Value = m.lcTable.Rows(1).cells(1).innerTEXT
.txtOGRN.Value = m.lcTable.Rows(2).cells(1).innerTEXT
.txtINN.Value = m.lcTable.Rows(3).cells(1).innerTEXT
.txtKPP.Value = m.lcTable.Rows(4).cells(1).innerTEXT
Else
Messagebox('Не найдено или ошибка ввода Кода с картинки')
Endif
.GetCaptcha()
Case .cServiceName = 'KONTUR.RU'
********************************
m.lcBody = .oXMLHTTP.responseText
If [class="search-result"]$m.lcBody
_Cliptext = m.lcBody
m.loHTML.Write(_Cliptext)
m.oResult = m.loHTML.body.Document.getElementsByTagName('li')
If m.oResult.Length > 0
For m.nIndex = 0 To m.oResult.Length-1
m.oRecv = m.oResult.Item(m.nIndex)
With m.oRecv
If Lower(.classname) == 'search-result'
If '</B>'$Upper(.innerhtml) && Если выделено жирным
Local m.lcHtmlFile
m.lcHTMLFile = m.lcTmp_DIR+"html.txt"
= Strtofile(.innerTEXT, m.lcHTMLFile)
m.lcBody = Alltrim(Filetostr(m.lcHTMLFile))
Do While(Isdigit(m.lcBody)) && Убираем порядковый номер
m.lcBody = Substr(m.lcBody,2)
Enddo
Thisform.txtPrim.Value = Alltrim(m.lcBody)
Endif
Endif
Endwith
Endfor
Endif
Else
Messagebox('увы - запрос не правильный')
Endif
Endcase
Endif
Wait Clear
.LockScreen=.F.
Endwith
*----------------
*!* Procedure Command1.Click && кнопка поиск
*----------------
With Thisform
Local m.lcINN
m.lcINN = Alltrim(.txtINN.Value)
If Empty(m.lcINN)
Messagebox("! Не указан ИНН для поиска ")
Return
Endif
If !INN_Check(m.lcINN)
Messagebox("! Некорректный ИНН")
Return
Endif
If !.cINN == m.lcINN
.cINN = m.lcINN
.Poisk_Kontur() && поиск на сайте Контур
Endif
If !Empty(.txtCaptcha.Value)
If Len(m.lcINN) # 10 && поиск только юрлиц
Messagebox(" ! на сайте ФНС поиск только юридических лиц ")
Return
Else
.Poisk_Nalog()
Endif
Endif
Endwith
*----------------
*!* Procedure INN_Check && тоже взято на Foxclub.ru
*----------------
lParameters tcINN
*!* Проверка корректности ИНН
*!* 1. tcINN - Значение ИНН, которое необходимо проверить(символьного или числового типа)
*!* !ВНИМАНИЕ !
*!* В процессе выполнения функции значение параметров может меняться, поэтому
*!* не следует использовать передачу параметров по ссылке
*!* Возвращает .T. - если ИНН записаны корректно и .F. - если нет
*!* Код программы написан на основе методики описанной по данному адресу
*!* myriadsoftware.al.ru
*!* Для справки: структура ИНН анализируемая данной программой
*!* 10-ти разрядный ИНН - NNNNXXXXXC
*!* 11-ти разрядный ИНН - FNNNNXXXXXC
*!* 12-ти разрядный ИНН - NNNNXXXXXXCC
*!* где: NNNN - номер налоговой инспекции
*!* XXXXX, XXXXXX - порядковый номер налогоплательщика
*!* (номер записи в госреестре)
*!* C - контрольное число в 10-ти разрядном ИНН
*!* CC - контрольное число в 12-ти разрядном ИНН
*!* (фактически, идущие подряд две контрольные цифры)
*!* F - это буква (символ) "F", используется для иностранных организаций работающих в РФ
*!* в остальном 11-ти разрядный ИНН полный аналог 10-ти разрядного ИНН
Local llIsCorrect
llIsCorrect = .T.
Do Case
Case Type("tcINN")="N"
** tcINN=Ltrim(Str(m.tcINN,20))
tcINN=Transform(m.tcINN)
Case Type("tcINN")="C"
tcINN=Alltrim(m.tcINN)
Otherwise
llIsCorrect = .F.
Endcase
* Проверка правильности длины ИНН (количества символов)
If m.llIsCorrect = .T.
Do Case
Case Len(m.tcINN)<=10
tcINN=Padl(m.tcINN,10,"0")
Case Len(m.tcINN)=11
If Left(m.tcINN,1)="F"
tcINN = Substr(m.tcINN,2,10)
Else
llIsCorrect = .F.
Endif
Case Len(m.tcINN)=12
Otherwise
llIsCorrect = .F.
Endcase
Endif
* Проверка того, что ИНН состоит только из цифр
Local lnI
If m.llIsCorrect = .T.
For lnI=1 To Len(m.tcINN)
If Isdigit(Substr(m.tcINN,m.lnI,1))=.F.
llIsCorrect = .F.
Endif
Endfor
Endif
* Весовые коэффициенты для ссответствующих символов в ИНН
Local la10(12), la11(12), la12(12)
Store 0 To m.la10, m.la11, m.la12
la10[1]=2
la10[2]=4
la10[3]=10
la10[4]=3
la10[5]=5
la10[6]=9
la10[7]=4
la10[8]=6
la10[9]=8
la11[1]=7
la11[2]=2
la11[3]=4
la11[4]=10
la11[5]=3
la11[6]=5
la11[7]=9
la11[8]=4
la11[9]=6
la11[10]=8
la12[1]=3
la12[2]=7
la12[3]=2
la12[4]=4
la12[5]=10
la12[6]=3
la12[7]=5
la12[8]=9
la12[9]=4
la12[10]=6
la12[11]=8
* Собственно расчет контрольных сумм
If m.llIsCorrect = .T.
Local lnCheckSum10,lnCheckSum11,lnCheckSum12
Store 0 To m.lnCheckSum10,m.lnCheckSum11,m.lnCheckSum12
For lnI=1 To 12
lnCheckSum10 = m.lnCheckSum10+la10[m.lnI]*Val(Substr(m.tcINN,m.lnI,1))
lnCheckSum11 = m.lnCheckSum11+la11[m.lnI]*Val(Substr(m.tcINN,m.lnI,1))
lnCheckSum12 = m.lnCheckSum12+la12[m.lnI]*Val(Substr(m.tcINN,m.lnI,1))
Endfor
lnCheckSum10 = Mod(Mod(m.lnCheckSum10,11),10)
lnCheckSum11 = Mod(Mod(m.lnCheckSum11,11),10)
lnCheckSum12 = Mod(Mod(m.lnCheckSum12,11),10)
If Len(m.tcINN)=10 And m.lnCheckSum10<>Val(Right(m.tcINN,1)) Or ;
LEN(m.tcINN)=12 And (m.lnCheckSum11<>Val(Substr(m.tcINN,11,1)) Or m.lnCheckSum12<>Val(Right(m.tcINN,1)))
llIsCorrect = .F.
Endif
Endif
Return m.llIsCorrect


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
Гулин Федор

Сообщений: 4640
Откуда: Минск
Дата регистрации: 24.10.2002
зы @Равиль - хорошло бы саму форму - выложил как атачмент - кому надо скачает
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
Равиль

Сообщений: 6549
Откуда: Уфа
Дата регистрации: 01.08.2003
Гулин Федор
зы @Равиль - хорошло бы саму форму - выложил как атачмент - кому надо скачает

легко !
do poisk_INN


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
sphinx

Сообщений: 31179
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Равиль! :hi:

:beer2:


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
Равиль

Сообщений: 6549
Откуда: Уфа
Дата регистрации: 01.08.2003
Это Евгению спасибо


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
dos32
Автор

Сообщений: 1017
Откуда: Ленинград
Дата регистрации: 15.01.2008
Фенькс, как-то поздновато смотрю я на не наткнулся , полезная штука. Да и контрагентов заводить так муторно, а так хоть немного автоматизации
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
Евгений Банщиков

Сообщений: 218
Откуда: Kurgan
Дата регистрации: 09.04.2004
Равиль
набросал такую форму :
Сначала при открытии формы идет поиск на сайте СКБ Контур focus.kontur.ru
(там не нужна капча, но результат поиска не структурированный),
В структурированном виде данные можно получить , выполнив дополнительный подзапрос.
В ответе ,в наименовании предприятия, есть гиперсылка примерно такого вида : focus.kontur.ru/entity?query=311450107700052
По ней и можно взять инфу по реквизитам
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Евгений. Я, эта, присоединяюсь к ... (уважуха вобщем), и ты предложил микрософт.XMLHTTP - ну, там все поздравления... ну, блин, я вошел (благодаря тебе) в контакт с итернетом... ... спасибо...

Все это не юмор, во время пришлась эта инфа, этот сайт про ИНН, и его "разборка" через ИЕ-техногогии (я их не знал), еще раз спачибо...



Исправлено 1 раз(а). Последнее : of63, 31.03.12 19:28
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
dos32
Автор

Сообщений: 1017
Откуда: Ленинград
Дата регистрации: 15.01.2008
Во, приехал с дачи, там канал тощий, а тут дома попробовал ... Еще раз фенькс за готовое решние, сейчас его мигом адаптирую к себе и девушки в офисе пишать будут от счасться.
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
Зингер

Сообщений: 541
Откуда: Белгород
Дата регистрации: 02.12.2008
Спасибо Вам за пример. Только допилите проверку юр. лиц. Ввел свой ИНН(ИП) ,увидел свои данные и ошибку о том, что < на сайте ФНС поиск только юридических лиц >.
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
Равиль

Сообщений: 6549
Откуда: Уфа
Дата регистрации: 01.08.2003
Зингер
Спасибо Вам за пример. Только допилите проверку юр. лиц. Ввел свой ИНН(ИП) ,увидел свои данные и ошибку о том, что < на сайте ФНС поиск только юридических лиц >.
информация в верхнем поле - это с сайта СКБ Контур, а на сайте ФНС поиск только юрлиц (ЕГРЮЛ): egrul.nalog.ru


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
Равиль

Сообщений: 6549
Откуда: Уфа
Дата регистрации: 01.08.2003
Похоже надо открывать горячую линию по этой теме, чтобы вовремя реагировать на изменения на сайте egrul.nalog.ru
и тут нам не обойтись без помощи Евгения Банщикова и Олега Фролова (of63).
Поставил плагин ieHTTPHeaders - глянул и радостный такой увидел, что &captcha вместо &ccc
но увы ... надо рыть глубже


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
...Хитро как-то рисунок капчи (пере)запрашивает - в 2 этапа:


...Так вот явно удобнее подпрограмму иметь для передачи запроса на сервер и приема ответа, что я и попытался... Иначе на каждый сайт много кода будет написано... однако еще не пробился к сайту
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
Равиль

Сообщений: 6549
Откуда: Уфа
Дата регистрации: 01.08.2003
of63
...Так вот явно удобнее подпрограмму иметь для передачи запроса на сервер и приема ответа, что я и попытался... Иначе на каждый сайт много кода будет написано... однако еще не пробился к сайту

кстати Вашу подпрограмму (add_net.prg) я только сегодня увидел - от того, что Вы редактировали сообщение, а не создали новое )) - читаю комментарии, спасибо

Мне уже не нравится такое "поведение" сайта ФНС - сижу переделываю полностью на Контур ...


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
да, "редактировал" - ну, виноват
А про отказываться: надо понять, простить разобраться, там же в ФНС ребята стараются, меняют, так что фик поймешь

...Вот, на всякий случай, как подпрограмма (OpenURL()) была использована:
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Вобщем, рисунок капчи можно доставать вот так (при помощи то же подпр.):
* запросить капчу, нарисовать ее на экране
CASE m.l=="K"
.imgCaptcha.Picture = "" && сотрем предыдущий рисунок
.TextCaptcha.Value = EMPTYVAL(.TextCaptcha.Value) && сотрем предыдущий код капчи
m.h = SRAZDS("#ACCEPT=*", CHR(13),; && [GET]. Запрашиваем любой вид данных (MIME */*) "#ACCEPT=*"
"#OK=Body",; && вернуть ResponseBody
"#NOK=Empty",; && при неудаче вернуть ""
CVCT("#COOKIE=", m.c)) && если задан файл куков, то с поддержкой куков
*!* m.h = SRAZDS(m.h, CHR(13),; && отладочные файлы, чтобы смотреть страницу/ответ, которую послал сервер
*!* "#FileBody="+"D:\xxx_responsebody.txt",;
*!* "#FileText="+"D:\xxx_responsetext.txt")
* Возвращает с сервера специфический код (СК) вида {"h":"0123456789abcdefgh"},
* который нужно отправить обратно на сервер для получения рисунка
m.s = OpenURL(m.u+"/",; && оказывается слеш в конце - это обязательно!
m.h,; && заголовки запроса (список через ВК: имя=значение)
"r=new_captcha") && параметры запроса (список через ВК: имя=значение)
IF !GETWORDCOUNT(m.s, '"')=5 && ожидаем СК вышеуказанного вида...
WAIT LEFT("Получен неверный код:"+CHR(13)+m.s, 250) WINDOW NOWAIT
DO BEEPER WITH 3
ELSE && CR принят успешно
m.s = GETWORDNUM(m.s, 4, '"') && собственно СК, надо вернуть его на сервер побыстрее (timeout=5, max=100)
m.h = SRAZDS("#IMAGE", CHR(13),; && [GET]. Вернуть картинку (ResponseBody), или ""
CVCT("#COOKIE=", m.c)) && если задан файл куков, то с поддержкой куков
m.x = OpenURL(m.u+"/",; && оказывается слеш в конце - это обязательно!
m.h,; && заголовки запроса (список через ВК: имя=значение)
SRAZDS("r=captcha", CHR(13),; && параметры запроса (список через ВК: имя=значение)
"h="+m.s))
.imgCaptcha.PictureVal = m.x
* картинку бы расшифровать... если суметь поделить картинку на цифры, и самообучающимся нейропроцессором...
* или сканировать слева направо на предмет наличия цифры 0...9, отмечая координаты всплеска корреляции...
* .TextCaptcha.Value = РасшифровкаКапчи(m.x)
ENDIF

... а осуществлять поиск:
m.u = ALLTRIM(m.parURL) && например, egrul.nalog.ru
Do Case
Case m.parName='NALOG.RU'
m.u = SRAZDS(m.u, "/", "?r=search") && URL, передаем-то методом POST, но в URL также указывается вот такой параметр запроса...
m.h = SRAZDS("#POST", CHR(13),; && посылаем методом POST
"#UTF-8=",; && на этом сайте посылаем запрос БЕЗ [UTF8] кодирования... почему так... не понял
"#HTMLbody") && Ожидаем HTML-контент, body - потому что сервер возвращает html с charset=1251, поэтому раскодировать ответ не надо (будем брать в ResponseBody)
m.z = ""
IF parПереданыПараметрыЗапроса
m.z = SRAZDS('num='+ALLTRIM(m.parINN), CHR(13),; && параметры формы (ИНН)
"captcha" + '=' + ALLTRIM(m.parCaptcha)) && почему-то меняют разработчики... было недавно cc, ccc ...
ENDIF

надо убегать, разбор завалов полученного текста - завтра

А вот как они возвращают ответ:

POST /?r=search HTTP/1.1
x-requested-with: XMLHttpRequest
Accept-Language: ru
Referer: egrul.nalog.ru
Accept: */*
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0...
Host: egrul.nalog.ru
Content-Length: 27
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ... PHPSESSID=а....p0

num=7707083893&captcha=12345 - запрашиваем отделение №7 СБ РФ по его ИНН

HTTP/1.1 200 OK
Date: Wed, 18 Apr 2012 05:33:00 GMT
Server: Apache
X-Powered-By: PHP/5.3.2
Expires: Thu, 19 Nov 1981 08:50:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 1622
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

{"errors":{"code":0,"msg":""},"result":{"found":2,"hash":"9b3....089a8","pages":[],"orgs":[{"hash":"fe8072....fd6b095b","num":1,"ogrn":"1027700132195","inn":"7707083893","kpp":"775001001","name":"\u041e\u0442\u043a\u0440\u044b\u0442\u043e\u0435 \u0430\u043a\u0446\u0438\u043e\u043d\u0435\u0440\u043d\u043e\u0435 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e &quot;\u0421\u0431\u0435\u0440\u0431\u0430\u043d\u043a \u0420\u043e\u0441\u0441\u0438\u0438&quot;","address":"117997, \u041c\u043e\u0441\u043a\u0432\u0430 \u0433, \u0412\u0430\u0432\u0438\u043b\u043e\u0432\u0430 \u0443\u043b, 19","state":"","name1":"","address1":"","inn1":""}, ... еще такие же блоки, если фирм несколько...

После раскодировки этого дела должно получиться, например, name: Открытое акционерное общество "Сбербанк России" (в ИЕ это наверное делает какой-то скрипт, там несколько файлов .js). Осталось написать раскодировщик, или подобрать.

...Может все это "ломиться в открытые ворота"... Может, есть более простые механизмы генерировать запрос и извлекать содержимое с страниц, генерируемых серверами, без помощи ИЕ, и с помощью ИЕ ?...



Исправлено 2 раз(а). Последнее : of63, 18.04.12 10:07
Ratings: 0 negative/0 positive
Re: http://egrul.nalog.ru/
Равиль

Сообщений: 6549
Откуда: Уфа
Дата регистрации: 01.08.2003
of63
... А про отказываться: надо понять, простить разобраться, там же в ФНС ребята стараются, меняют, так что фик поймешь ...

Респект
А я по пути наименьшего сопротивления - убрал из формы поиск на налог.ру (до лучших времен)
Поиск идет (do Poisk_INN):
- по ИНН и ОГРН (добавил проверку OGRN_Check())
- юридических и физлиц
- без капчи и куков на контур.ру

Метод .Poisk() в форме насыщен вложенными циклами - оптимизировать просто некогда да и знаний не хватает


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 25 Victoriacom Guest (Гостей: 23)

© 2000-2024 Fox Club 
Яндекс.Метрика