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

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

Ответить
Настройки темы
Как автоматически заливать изображения на обменники картинок?

Старожил


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

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


Добрый день! Допустим, на жестком диске есть 3 изображения ($sPicturePath1, $sPicturePath2, $sPicturePath3). Как средствами AutoIt загрузить их на один из обменников картинок? Пусть обменник будет http://ambrybox.com.
Можно, конечно, открыть сайт в IE и используя функции из IE.au3 написать скрипт, который будет одну за одной нажимать все кнопочки и проставлять все галочки, где надо. Однако дело это неблагодарное (то кнопочка не нажмется, то IE зависнет, то еще что-нибудь), да и скрипт получится громоздкий. Есть ли более рациональный вариант?
P.S. Не исключаю, что AutoIt - не лучшая среда для реализации подобных задач (хотя не знаю точно). Если так, то на чем лучше заниматься такими вещами?

Отправлено: 19:03, 16-02-2010

 

Аватара для Sp01LeR

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


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

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


Цитата Creat0R:
Многие пробовали, и ни у кого ничего не вышло, autoit просто не создан для этого »
значит не так пробовали, потому что -
autoit не может быть "просто не создан для этого", так как использует стандартную либу wsock32.dll для функций работы с сокетами..

Цитата evg64:
Я скачивал демо-версии пары снифферов »
Какой толк качать демо, если есть фришный комбайн WireShark - там WinPcap в комплекте

Цитата evg64:
Что вбить в гугл, чтобы почитать об этом подробнее »
Ничего вбивать не надо - есть хорошее описание на ru.wiki

Отправлено: 00:42, 28-02-2010 | #11



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

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


Аватара для Creat0R

Must AutoIt


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

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


Цитата Sp01LeR:
autoit не может быть "просто не создан для этого", так как использует стандартную либу wsock32.dll для функций работы с сокетами »
В теорий всё хорошо, на практике всё иначе .

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 02:03, 28-02-2010 | #12


Аватара для Creat0R

Must AutoIt


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

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


Вот что получилось на основе информаций с wiki:

Код: Выделить весь код
Test()

Func Test()
    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")

    $sBoundary = Hex(Random(1, 2^30, 1), 8) & '_Synapse_boundary'

    $sFile = @ScriptDir & "\test.png"
    $sServer = "http://turboupload.com/cgi-bin/upload.cgi?upload_id="

    $sFileName = StringRegExpReplace($sFile, "^.*\\", "")
    $sFileExt = StringRegExpReplace($sFile, "^.*\.", "")
    $sHost = StringRegExpReplace($sServer, "http://(.*?)/.*", "\1")

    $hFile = FileOpen($sFile, 16)
    $sReadFile = StringTrimLeft(FileRead($hFile), 2)
    FileClose($hFile)

    $sPost_Data = ""
    $sPost_Data &= "--" & $sBoundary & @CRLF
    $sPost_Data &= 'Content-Disposition: form-data; name="file"; filename="' & $sFileName & '"' & @CRLF
    $sPost_Data &= 'Content-Type: image/' & $sFileExt & @CRLF & @CRLF & @CRLF
    $sPost_Data &= $sReadFile & @CRLF
    $sPost_Data &= "--" & $sBoundary & @CRLF

    $oHTTP.Open("POST", $sServer)
    $oHTTP.setTimeouts(5000, 5000, 15000, 15000)
    $oHTTP.SetRequestHeader("Host", $sHost)
    $oHTTP.SetRequestHeader("Referer", $sServer)
    $oHTTP.SetRequestHeader("User-Agent", "AutoIt/3")
    $oHTTP.SetRequestHeader("Content-Type", 'multipart/form-data; boundary="' & $sBoundary & '"')
    $oHTTP.SetRequestHeader("Content-Length", StringLen($sPost_Data))

    $oHTTP.Send($sPost_Data)
    $oHTTP.WaitForResponse

    If Not @error Then
        $sResponse = $oHTTP.Responsetext
        ConsoleWrite($sResponse)
        ShellExecute(StringRegExpReplace($sResponse, "(?s).*(http://.*)\n.*", "\1"))
    EndIf
EndFunc
файл заливается, но не очень корректно, видимо нужно найти способ получше для передачи в бинарном виде...

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 02:34, 28-02-2010 | #13


Аватара для Sp01LeR

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


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

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


Цитата Creat0R:
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1") »
хех, я имел ввиду не отправку через обьект "winhttp", а напрямую через функции работы с сокетами - TCPSend() и TCPRecv() - это самый надежный способ...
Цитата Creat0R:
файл заливается, но не очень корректно »
возможно, что неправильный реальный размер $sPost_Data в байтах, там нулевой байт(0x00) тоже должен учитыватся...
Цитата(источник: http://frolov-lib.ru/programming/art...oad/index.html):
Цитата:
Извлечение текстовых данных и файлов из полей формы следует выполнять в цикле. Соответствующий алгоритм должен применять бинарное сравнение для поиска разделителей, например при помощи функции memcpi. Заметим, что использование функции сравнения текстовых строк strcpi не приведет к успеху, так как в теле принятых файлов могут находиться нулевые байты.

Последний раз редактировалось Sp01LeR, 28-02-2010 в 18:53.


Отправлено: 18:06, 28-02-2010 | #14


Аватара для Creat0R

Must AutoIt


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

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


Цитата Sp01LeR:
я имел ввиду не отправку через обьект "winhttp", а напрямую через функции работы с сокетами - TCPSend() и TCPRecv() - это самый надежный способ »
На данный момент разницы особой нету, если оно сработает с «winhttp» то переписать под TCP будет не сложно.

Цитата Sp01LeR:
возможно, что неправильный реальный размер $sPost_Data в байтах, там нулевой байт(0x00) тоже должен учитыватся... »
Пробовал по разному, размер файл вообще в два раза больше почему то, даже если указать его реальный размер.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 19:53, 28-02-2010 | #15


Аватара для Sp01LeR

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


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

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


Код: Выделить весь код
#include <string.au3>
$sFile = "твоя картинка"
$size = FileGetSize($sFile)
$hFile = FileOpen($sFile, 16)
    $sReadFile = StringTrimLeft(FileRead($hFile), 2)
FileClose($hFile)
$sReadFile=_HexToString($sReadFile)
MsgBox(0, "Оригинальный размер:", $size, 45)
MsgBox(0, "Размер $sReadFile:", StringLen($ReadFile), 45)
MsgBox(0, "Начальные байты:", $sReadFile, 45)
простым чтением FileOpen($sFile, 0) из GIF-картинки пропадало 2 байта...

Цитата Creat0R:
На данный момент разницы особой нету, если оно сработает с «winhttp» то переписать под TCP будет не сложно. »
лучше сразу писать под TCP - через wsock32.dll передача больших обьемов данных побыстрее будет, если хочешь - сравни передачу файла весом 5-7mb через сокет и через обьект winhttp..

Последний раз редактировалось Sp01LeR, 28-02-2010 в 20:49.


Отправлено: 20:38, 28-02-2010 | #16


Аватара для Creat0R

Must AutoIt


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

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


Цитата Sp01LeR:
простым чтением FileOpen($sFile, 0) из GIF-картинки пропадало 2 байта »
У меня тут png, и размеры совпадают, т.ч проблема не в этом.

Цитата Sp01LeR:
лучше сразу писать под TCP - через wsock32.dll передача больших обьемов данных побыстрее будет »
Я не за скоростью гонюсь (пока), мне лично нужен рабочий вариант, чтобы не использовать dll'ку.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 23:49, 28-02-2010 | #17



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Как сделать маленькие превьюшки картинок в XP как в VISTA? Maximka111 Microsoft Windows 2000/XP 2 01-12-2008 17:38
Как настроить WindowsMediaPlayer автоматически? Cobra_1_Stas Автоматическая установка Windows 2000/XP/2003 3 04-03-2008 03:50
Как отключить загрузку картинок в Mozilla Firefox Limmi Хочу все знать 2 03-04-2006 11:41




 
Переход