Привет всем.
Я решил модифицировать скрипт, вместо работы с IE переделать на отправку запросов.
У меня есть вопрос по работе с запросами к серверу(пример взят с форума).
Для отправки запроса я использую следующий код:
MsgBox(1,"", $aData[1]) выводит html сайта, как вытащить ссылку такого вида (src="img2img.cgi?img=456e63cb248cffd1e9cc0abc4875ea5a") это картинка(captcha)
Я решил модифицировать скрипт, вместо работы с IE переделать на отправку запросов.
У меня есть вопрос по работе с запросами к серверу(пример взят с форума).
Для отправки запроса я использую следующий код:
Код:
#include <IE.au3>
#include <Array.au3>
$sDomain = 'www.bwc.ru' ;домен или ip-адрес
$iPort = 80 ;порт
;Запрос, который будет отправлен серверу
$sRequest = 'GET /cgi-bin/smssend.cgi HTTP/1.1' & @CRLF ;Request-строка, параметры GET-запроса
$sRequest &= 'Host: www.bwc.ru' & @CRLF
$sRequest &= 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1' & @CRLF
$sRequest &= 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF
$sRequest &= 'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF
$sRequest &= 'Accept-Encoding: gzip, deflate' & @CRLF
$sRequest &= 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7' & @CRLF
$sRequest &= 'Keep-Alive: 115' & @CRLF
$sRequest &= 'Connection: keep-alive' & @CRLF & @CRLF
If TCPStartup() = 0 Then ;запускаем TCP/UDP-службы
MsgBox(16, 'Ошибка', 'Не удалось запустить TCP/UDP-службы.')
Exit 1
EndIf
$sIP = TCPNameToIP($sDomain) ;получаем ip-адрес
If @error Then
MsgBox(16, 'Ошибка', 'Не удалось получить ip-адрес сервера.')
Exit 2
EndIf
$iSocket = TCPConnect($sIP, $iPort) ;соединяемся с сервером
If @error Then
MsgBox(16, 'Ошибка', 'Не удалось соедениться с сервером.')
Exit 3
EndIf
TCPSend($iSocket, $sRequest) ;отправляем сообщение
If @error Then
MsgBox(16, 'Ошибка', 'Не удалось отправить запрос.')
Exit 4
EndIf
$sData = ''
$iTimer = TimerInit() ;запускаем таймер
Do
$sBuffer = TCPRecv($iSocket, 1024) ;получаем часть сообщения сервера
$iError = @error
If Not $sBuffer = '' Then ;если удалось получить сообщение
$sData &= $sBuffer ;сохраняем полученное сообщение
$iTimer = TimerInit() ;обнуляем таймер
EndIf
Until $iError <> 0 Or TimerDiff($iTimer) > 5000 ;если при получении сообщения произошла ошибка (данные получены, соединение закрыто) или в течении 5 секунд ничего не было получено, выход из цикла
TCPCloseSocket($iSocket)
TCPShutdown()
$aData = StringRegExp($sData, '(?s)(.*?)\r\n\r\n(.*)', 3) ;отделяем http-заголовки от тела сообщения ('заголовки' & @CRLF & @CRLF & 'тело')
If @error Then
MsgBox(16, 'Ошибка', 'Полученные данные неверны.')
Exit 5
EndIf
$fileo = FileOpen("C:\Текстовый документ.txt",2)
$filew = FileWrite("C:\Текстовый документ.txt", $aData[1])
$filec = FileClose("C:\Текстовый документ.txt")
MsgBox(1,"", $aData[1])