Определяем WebMoney BL

Иногда может потребоваться определить этот небезызвестный показатель в своей программе.

Задавшись этим вопросом, полез смотреть, с каких страниц его можно спарсить. Первое, что попадается, это картинка, которая показывается при просмотре аттестата WebMoney (например, вот эта). Далее в заметке буду использовать wmid 000000000000 для примера. Можно и картинку распознать — не вопрос, но зачем так сложно?

Побродив немного по форумам и прочим ссылкам из выдачи, нашёл ещё пару возможностей определить WebMoney BL. Пара скриптов с https и, о чудо, простой скрипт, выдающий основную информацию о сертификате.

Итак, наша цель сводится к простой задаче парсинга html-страницы.

Что парсим? http://passport.webmoney.ru/asp/certcard.asp?id=000000000000 — вот ссылка. Зайдя на неё, видим информацию о: типе аттестата, фио, бизнес-уровне (тот самый BL), дате регистрации и количестве претензий. Мы спарсим только BL, но ничего не стоит потом изменить программу и для парсинга остальных значений.

Для простоты поставим на форму TIdHTTP, TEdit и TButton. В процедуре Button1Click создадим переменные:

var
 resp: string;
 bl, err: integer;

В resp получим код страницы:

 resp:=IdHTTP1.Get('http://passport.webmoney.ru/asp/certcard.asp?id='+Edit1.Text);

Теперь присмотримся к коду страницы: нужное нам значение бизнес-уровня находится сразу после [BL]:</span> и пробела. Чтобы получить это число, скопируем 10 символов после этого фрагмента и используем процедуру Val:

Val(Copy(resp ,Pos('[BL]:</span>',resp)+13,10), bl, err);

Если всё сработало правильно (то есть WebMoney не поменяли формат вывода того скрипта), то в bl окажется так нужный нам Business Level, а в err — 0, если длина BL 10 символов (что вряд ли возможно), 1 в случае ошибки или число от двух до десяти, которое показывает позицию первой «не цифры».

То есть, в случае err=1 мы имеем ошибку, иначе bl получен верно. Весь код:

procedure TForm1.Button1Click(Sender: TObject);
var
 resp: string;
 bl, err: integer;
begin
 resp:=IdHTTP1.Get('http://passport.webmoney.ru/asp/certcard.asp?id='+Edit1.Text);
 Val(Copy(resp ,Pos('[BL]:</span>',resp)+13,10), bl, err);
 if err<>1 then
 ShowMessage('WebMoney BL: '+inttostr(bl))
 else
 ShowMessage('error retrieving WebMoney BL');
end;

Порой ощутимо важно узнать рейтинг продавца, чтобы решить, стоит ли с ним связываться, покупать товар, или его миллионные обороты каждый день – выдумка. Да и в реальной жизни так: если покупаешь что-то дорогое, например, машину, всегда нужно читать будь то отзывы Hyundai от самих владельцев или тест-драйвы независимых фирм.

(c) crystalbit, http://parsers.info

93 ответа к «Определяем WebMoney BL»

  1. После прочтения статьи возник вопрос «а, собственно, нафига?», хотел запостить, а тут оказывается все такие :)

    Но автор молодец, не поленился раскрыть такую узкую тему.

  2. Вот не могу понять как определяется этот BL в самой программе, как то было захожу и смотрю у меня BL 25 на следующий день у меня уже 24. =)

  3. бл накрутить можно и за вечер и вы никогда об этом не узнаете, а что касается программирпования то я когда то выбрал для себя C## и пока вроде не пожалел правда выход из темного леса прорисовывается где то еще очень далеко

  4. Тут некоторые писали мол зачем это нужно. А мне реально пригодилось когда делали софт для обменника ВМ. Так что спасибо за статью

    1. а продавцу-то зачем? наоборот, чтобы покупатель видел, что у продавца было совершено много сделок, и он в некоторой степени надёжен

  5. Способ умер!, А вообще штука неплохая-была, при приобретении чего либо дополнительная информация о партнере не помешает.

  6. Автор приветствую! Проверил твою фишку. Потерял уйму времени. Тема не заработала. Возможно уже не актуальна тема. поздно взялся. Спасибо!

Добавить комментарий для Евген Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *