Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Получение содержимого картинки через tcp

Ответить
Настройки темы
Получение содержимого картинки через tcp

Пользователь


Сообщения: 61
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите как это реализовывается, как мне сказали знающие люди полученные данные зачем то кодируются в 16-чную систему, а оно мне не надо надо будет сохранить в файл а потом отобразить на форме. InetGet не подойдет так как картинка - каптча код.

Код: Выделить весь код
 $sHost2 = "ya.ru"
 $sPage="/"

 msgbox (0,"привет",_HTTPGetHeader($sHost2))

Func _HTTPGetHeader($sHost)
TCPStartup()
    Local $sName_To_IP = TCPNameToIP($sHost)
    Local $iSocket = TCPConnect($sName_To_IP, 80)
    If $iSocket = -1 Then
        TCPCloseSocket($iSocket)

        Return SetError(1, 0, "")
    EndIf
    Local $sCommand = "GET /logo.png HTTP/1.0" & @CRLF
    $sCommand &= "Host: " & $sHost2 & @CRLF & @CRLF

    ConsoleWrite ($sCommand)
    Local $BytesSent = TCPSend($iSocket, $sCommand)
    If $BytesSent = 0 Then Return SetError(2, @error, 0)

    Local $sRecv = "", $sCurrentRecv
    While 1
        $sCurrentRecv = TCPRecv($iSocket, 16)
        If @error <> 0 Then ExitLoop
        If $sCurrentRecv <> "" Then $sRecv &= $sCurrentRecv
    WEnd
    ConsoleWrite ($sRecv)

TCPCloseSocket($iSocket)
TCPShutdown()
    Return $sRecv
EndFunc
Вот пример без каптчи, но все равно код картинки должен начинаться с "%PNG"

Отправлено: 14:23, 08-09-2009

 

Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Отправить PM | Цитировать


нужно отбросить хидеры отданые сервером и записать все остальное в файл... Вообще непонятно для чего все это? Свой браузер пишем?

Отправлено: 22:31, 08-09-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 61
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 11:05, 09-09-2009 | #3


Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Отправить PM | Цитировать


malev, а если так? непонятно почему InetGet не подойдет...
Код: Выделить весь код
#include <INet.au3> 
InetGet("http://ya.ru/logo.png", "C:\logo.png")

Отправлено: 11:27, 09-09-2009 | #4


Пользователь


Сообщения: 61
Благодарности: 0

Профиль | Отправить PM | Цитировать


http://webmaster.yandex.ru/ напиши тогда код получения следующей цифровой картинки (
Защита от автоматических регистраций)

Отправлено: 18:40, 09-09-2009 | #5


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


malev,
HTML код: Выделить весь код
InetGet('http://captcha.yandex.net/image?key=f9b73ae5d3f0714529c621b66f0d92a9', 'd:\1.jpg')

получить эту урлу думаешь сможешь сам
PS: имеется в виду, первый InetGet для полученя урлы, второй InetGet для получения картинки...

Вот набросал. Поиск строки можно реализовать намного проще через Рег.Выражения. Но я в них не силен.
Код: Выделить весь код
#include <Array.au3>
InetGet('http://webmaster.yandex.ru/', 'd:\1.url')
$hFile = FileOpen('d:\1.url', 0)
While 1
	$sCaptcha = FileReadLine($hfile)
	If StringInStr($sCaptcha, 'http://captcha.yandex.net') Then
		$aCaptcha = StringSplit($sCaptcha, '"')
		;_ArrayDisplay($aCaptcha)
		For $i = 1 to $aCaptcha[0]
			If StringInStr($aCaptcha[$i], 'http://captcha.yandex.net') Then $sURL = $aCaptcha[$i]
		Next
		ExitLoop
	EndIf
WEnd
InetGet($sURL, 'd:\1.jpg')
ShellExecute('d:\1.jpg')

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:13, 09-09-2009 | #6


Пользователь


Сообщения: 61
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 19:49, 10-09-2009 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Получение содержимого картинки через tcp

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Получение статуса компьютера через батник по сети. Serjione Скриптовые языки администрирования Windows 21 18-12-2009 18:29
Доступ - Веб-сервер на рабочем пк -как запретить просмотр содержимого сайтов через проводник? Gamover jr Microsoft Windows 2000/XP 1 15-06-2008 16:20
Просмотр содержимого СД/ДВД через аутентификацию. Возможно такое? yurfed Хочу все знать 1 15-08-2007 12:55
PHP: Получение переменных через POST DANTIST Вебмастеру 5 01-04-2007 17:27
MS Networking через TCP/IP Mr Dan Сетевые технологии 9 23-02-2005 05:50




 
Переход