Определяем 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
А у меня BL=2 ( Примерно за месяц. как начал пользываться )
Заходим на сайт вебмоней и палим всю инфу! Проще же
После прочтения статьи возник вопрос «а, собственно, нафига?», хотел запостить, а тут оказывается все такие :)
Но автор молодец, не поленился раскрыть такую узкую тему.
Вот не могу понять как определяется этот BL в самой программе, как то было захожу и смотрю у меня BL 25 на следующий день у меня уже 24. =)
бл накрутить можно и за вечер и вы никогда об этом не узнаете, а что касается программирпования то я когда то выбрал для себя C## и пока вроде не пожалел правда выход из темного леса прорисовывается где то еще очень далеко
ну да, чисто позновательная статья + скилл программухи в тонусе держать)
Тут некоторые писали мол зачем это нужно. А мне реально пригодилось когда делали софт для обменника ВМ. Так что спасибо за статью
:)
Ну в основном БЛ нужен для продавца, я вот например как покупатель об этом сильно не волнуюсь, отправляю деньги и все
а продавцу-то зачем? наоборот, чтобы покупатель видел, что у продавца было совершено много сделок, и он в некоторой степени надёжен
Не могу понять как определяется этот BL , смотрю у меня BL12 на следующий день у меня уже 11.
Гениально! Лишнее задротство, но гениально. Чеж я сам-то не догадался
Видимо, они реогранизовали страничку… Сейчас этот способ не работает. Надо переработать :)
Я пробовал у меня не получается…действительно этот способ не работает..((
Способ умер!, А вообще штука неплохая-была, при приобретении чего либо дополнительная информация о партнере не помешает.
Пробовал парсер, что-то ошибку debug mode выводит? В чем тут проблема ?
Конкретную ошибку в студию
Используем для таких целей регулярные выражения,например как то так \[BL\]\:.*? (.*?) и это будет надёжней..
Чем надежнее?
У меня был BL 45 через день стал 43. И это при том, что за этот промежуток времени постоянно приходили переводы денег.
ОЧень нужная вещь, запишу. Сейчас занимаюсь написанием программы для подсчета операции в обменном пункте.
Автор приветствую! Проверил твою фишку. Потерял уйму времени. Тема не заработала. Возможно уже не актуальна тема. поздно взялся. Спасибо!
Полезная программка. Однажды может пригодиться.