Вверх ↑
Этот топик читают: Гость
Ответов: 44
Рейтинг: 0
#256: 2020-04-17 12:39:56 ЛС | профиль | цитата
Ок, спасибо.
карма: 0

0
Ответов: 4628
Рейтинг: 749
#257: 2020-04-17 15:22:04 ЛС | профиль | цитата
Итак. Для исправления ошибки 12175 на Windows 7 нужно установить обновление
http://www.catalog.update.microsoft.com/search.aspx?q=kb3140245

Затем в компоненте HTTPClient установить свойство SSLProtocols=All (нужно обновить *.pas-файлы из архива в первом посте).
Чтобы не требовалось устанавливать SSLProtocols=All, можно включить в системе по-умолчанию, внеся изменения в реестр. Информация - в папке "Ошибка 12175 на Windows 7".
Если ошибка появлялась на Windows 10 - после обновления компонентов может тоже исчезнуть.
Сообщите результаты. Схема от Sersey на странице 16 должна заработать.

Редактировалось 1 раз(а), последний 2020-04-17 15:23:58
карма: 26

1
Голосовали:Konst
Ответов: 1
Рейтинг: 0
#258: 2020-05-06 01:19:29 ЛС | профиль | цитата
Добрый день, желаю узнать, куда указывать следующие заголовки для GET запроса (на подобие гугла): Cache-Control, Connection, Content-Type
карма: 0

0
Ответов: 4628
Рейтинг: 749
#259: 2020-05-06 14:21:21 ЛС | профиль | цитата
В свойство или на точку Headers. В обычном виде:
Content-Type: text/plain
Connection: close

карма: 26

0
Ответов: 107
Рейтинг: 0
#260: 2020-05-27 17:38:39 ЛС | профиль | цитата
Привет ребята, прошу помощи понять логику построение пост и гет запросов в hiasm.

На примере можете показать как сделать выгрузку картинок на один обменник? (ссылка на обменник, логин и пароль в коде)
Как сделать так что бы я логин и пароль от этого обменника мог вывести в настройки своей программы?

Make(delphi)
ver(4.05 build 186)
Add(MainForm,6853331,448,266)
{
Width=1111
Height=760
Caption="HiAsm Forum"
}
Add(Button,6629940,490,420)
{
Width=130
Height=60
Font=[MS Sans Serif,10,1,255,1]
Caption="Êíîïêà 1"
link(onClick,11811091:doLoadString,[(538,426)(538,468)(633,475)(633,405)])
}
Add(CookieManager,6528556,700,469)
{
Name="rest"
}
Add(Memo,6191559,973,427)
{
Left=185
Width=820
Height=675
ScrollBars=2
}
Add(HTTPClient,11811091,700,399)
{
URL="https://picstate.com/account/login"
Method=1
Headers="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nAccept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3\r\nReferer: https://picstate.com/login\r\nContent-Length: 89\r\nOrigin: https://picstate.com\r\nUpgrade-Insecure-Requests: 1\r\nTE: Trailers"
UserAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0"
EncType=1
PostData="action=login\r\ntask=login\r\nreturn=\r\nusername=test01\r\npassword=123456\r\nremember=1\r\nsubmit=Login"
IgnoreInvalidCN=1
CookieManager="rest"
Point(Headers)
Point(PostData)
Point(onRedirect)
link(onRedirect,6191559:doAdd,[])
}
карма: 0

0
Ответов: 4628
Рейтинг: 749
#261: 2020-05-28 11:30:06 ЛС | профиль | цитата
1) Заголовок Content-Length указывать не следует - компонент сам сделает. Вообще в данной схеме, вероятно, можно никакие заголовки не указывать - разве что сервер отвергает запрос, если не указан Origin или Referer.
2) Поставь EncType=multipart....

Задача разбивается на несколько запросов. Выполняется первый запрос с логином и паролем для авторизации. В случае успеха в CookieManager оказываются куки сессии. Результат авторизации мониторить с точки onFinish, либо по кодах статуса ответа, если сервер возвращает какой-то в случае неудачной авторизации.

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

germes5558 писал(а):
Как сделать так что бы я логин и пароль от этого обменника мог вывести в настройки своей программы?
Всё, что указано в свойстве PostData - вынести в компонент FormatStr с двумя верхними точками в виде:
action=login
task=login
return=
username=%1
password=%2
remember=1
Тогда логин и пароль подаются на верхние точки FormatStr. Компонент FormatStr с помощью компонента EventFromData подключается к верхней точке HTTPClient.PostData.

Редактировалось 2 раз(а), последний 2020-05-28 11:36:29
карма: 26

0
Ответов: 107
Рейтинг: 0
#262: 2020-05-28 12:40:09 ЛС | профиль | цитата
Netspirit, Огромное спасибо за прояснения, вечером буду пробовать.
карма: 0

0
Ответов: 107
Рейтинг: 0
#263: 2020-05-28 16:35:37 ЛС | профиль | цитата
И так логинится и сохраняет куки без проблем. Но файл я отправить не могу туда, дело в том, что там для каждой сессии в пост запросе должен быть идентификатор. Подскажите пожалуйста как его достать. Я так понял перед отправкой файла нужно сделать GET запрос на страницу загрузки, но там никакого идентификатора я не нахожу.

карма: 0

0
Ответов: 4628
Рейтинг: 749
#264: 2020-05-28 16:44:11 ЛС | профиль | цитата
germes5558 писал(а):
Я так понял перед отправкой файла нужно сделать GET запрос на страницу загрузки
Правильно. Открой страницу загрузки в браузере и посмотри исходный код. Этот идентификатор должен быть впечатан сервером в коде страницы где-то внутри тега <form>, в котором отправляется файл. Поискать по "multiup_sess". Вот его можно будет вытаскивать перед каждой отправкой файла.
Он также может быть не на самой странице, а получаться отдельным предварительным фоновым запросом - тогда можно повторить этот запрос.

Редактировалось 1 раз(а), последний 2020-05-28 16:44:45
карма: 26

0
Ответов: 107
Рейтинг: 0
#265: 2020-05-28 18:37:05 ЛС | профиль | цитата
Netspirit, id сессии успешно добавил к пост запросам, но появилась другая проблема, там есть еще один парамтр который я нигде не могу найти:
uploader_0_tmpname "p1e9duq3jg11n61e3u1ribel29oi4.JPG", он тоже постоянно меняется. Буду очень презнателен за помощь.

Make(delphi)
ver(4.05 build 186)
Add(MainForm,2953706,21,105)
{
Width=1273
Height=902
Caption="HTTPClient - Cookie"
Position=1
Point(onClose)
link(onCreate,2515764:In,[])
link(onClose,16535532:In,[(61,132)(61,146)])
}
Add(Button,12479344,245,119)
{
Left=10
Top=60
Width=140
Height=25
Caption="login"
link(onClick,5102370:doEvent1,[])
}
Add(Memo,2568247,637,98)
{
Left=10
Top=100
Width=550
Height=250
ScrollBars=3
}
Add(Message,363691,490,147)
{
Caption="Îøèáêà çàïðîñà"
Icon=1
}
Add(DoData,7347341,455,98)
{
link(onEventData,9377522:doEvent1,[])
link(Data,2427935:getVar,[])
}
Add(Hub,9377522,525,98)
{
InCount=2
link(onEvent1,2568247:doAdd,[])
}
Add(CookieManager,16633777,371,336)
{
Filename="cookies.txt"
Name="rest"
Point(doDelete)
Point(onChange)
link(onChange,3907832:doWork,[])
}
Add(Hub,5102370,301,119)
{
link(onEvent1,8936422:doWork,[])
link(onEvent2,11811091:doLoadString,[(357,132)(357,223)])
}
Add(LineBreakEx,8936422,336,119)
{
Caption="clear"
}
Add(LineBreakEx,2111794,567,105)
{
Caption="clear"
Type=1
link(OnEvent,2568247:doClear,[])
}
Add(StringTableMT,6990886,469,378)
{
Left=10
Top=375
Width=550
Height=115
Hint="Íàæìèòå Delete äëÿ óäàëåíèÿ âûáðàííîé ñòðîêè"
Columns=#11:Ïðîòîêîë=30|7:Õîñò=90|6:Èìÿ=80|12:Çíà÷åíèå=100|14:Õðàíèòü äî=200|10:Max-Age=80|7:Ïóòü=80|9:Äîìåí=100|
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(Index)
Point(onKeyDown)
link(onKeyDown,9540469:doCompare,[])
}
Add(ArrayEnum,8557589,378,427)
{
link(onItem,6990886:doAdd,[(429,433)(429,384)])
link(Array,16633777:List,[])
}
Add(Hub,14417105,322,420)
{
link(onEvent1,6990886:doClear,[(351,426)(351,391)])
link(onEvent2,8557589:doEnum,[])
}
Add(InfoTip,5114647,231,305)
{
Info=#26:Îòîáðàæåíèå äîñòóïíûõ êóêè|
Width=435
Height=228
}
Add(LineBreak,5417363,329,364)
{
Caption="del"
Color=8421376
link(Out,16633777:doDelete,[])
Primary=[10680356,294,91]
}
Add(DoData,16059216,483,455)
{
link(onEventData,14177706:doEvent1,[])
link(Data,6990886:Index,[])
}
Add(LineBreakEx,8436280,266,420)
{
Caption="enum"
Type=1
link(OnEvent,14417105:doEvent1,[])
}
Add(LineBreakEx,7511669,560,462)
{
Caption="enum"
}
Add(Hub,14177706,532,455)
{
link(onEvent1,10680356:In,[])
}
Add(If_else,9540469,525,385)
{
Op2=Integer(46)
link(onTrue,16178583:doMessage,[])
}
Add(Message,16178583,581,385)
{
Message="Óäàëèòü ýòîò êóêè?"
Caption="Óäàëåíèå"
Type=2
Icon=2
Point(onYES)
link(onYES,16059216:doData,[(625,398)(625,437)(471,437)(471,461)])
}
Add(LineBreakEx,3907832,427,343)
{
Caption="enum"
}
Add(Label,4104088,21,203)
{
Left=10
Top=355
Width=42
Height=17
Caption="Cookies"
}
Add(LineBreakEx,2427935,455,70)
{
Caption="head"
Type=2
}
Add(LineBreakEx,15402714,413,266)
{
Caption="head"
Type=3
link(_Data,11811091:RawHeaders,[])
}
Add(Label,15666455,21,154)
{
Left=10
Top=10
Width=38
Height=17
Caption="Àäðåñ:"
}
Add(LineBreak,11924265,245,350)
{
Caption="save"
link(Out,16633777:doSave,[])
Primary=[16535532,-175,-210]
}
Add(LineBreak,9578685,287,357)
{
Caption="load"
link(Out,16633777:doLoad,[])
Primary=[2515764,-217,-238]
}
Add(HTTPClient,11811091,399,217)
{
URL="https://picstate.com/account/login"
Method=1
Headers="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nAccept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3\r\nReferer: https://picstate.com/login\r\nOrigin: https://picstate.com\r\nUpgrade-Insecure-Requests: 1\r\nTE: Trailers"
UserAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0"
PostData="action=login\r\ntask=login\r\nreturn=\r\nusername=test01\r\npassword=123456\r\nremember=1\r\nsubmit=Login"
IgnoreInvalidCN=1
CookieManager="rest"
Point(Headers)
Point(PostData)
Point(onRedirect)
Point(RawHeaders)
link(onHeadersAvail,7347341:doData,[(443,223)(443,104)])
link(onFinish,9377522:doEvent2,[(478,230)(478,111)])
link(onError,363691:doMessage,[(461,244)(461,153)])
}
Add(Memory,2845786,1204,357)
{
Default=String(C:\\test.jpg)
}
Add(Button,11773978,763,378)
{
Left=175
Top=60
Width=140
Height=25
Caption="GET"
link(onClick,15439320:doEvent1,[])
}
Add(Memo,13788333,1022,385)
{
Left=600
Top=80
Width=600
Height=510
link(onChange,14902239:doSearch,[(1062,391)(1062,433)])
}
Add(HTTPClient,8993969,854,378)
{
URL="https://picstate.com/multiup"
Headers="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nAccept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3\r\nReferer: https://picstate.com\r\nOrigin: https://picstate.com\r\nUpgrade-Insecure-Requests: 1\r\nTE: Trailers"
UserAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0"
PostData="multiup_sess=%1\r\naction=upload\r\nuploader_0_tmpname=p1e9dqcq2e1851v17mjb3t8nn4.JPG\r\nuploader_0_name=DLE.JPG\r\nuploader_0_status=done\r\nuploader_count=1\r\nprofile_id=1\r\nfolder_id=19588\r\nresize=100\r\ncustom=resize:\r\nper_row=0\r\ndelimiter= "
IgnoreInvalidCN=1
CookieManager="rest"
Point(Headers)
Point(PostData)
Point(onRedirect)
Point(RawHeaders)
Point(UploadFile)
link(onFinish,13788333:doAdd,[])
}
Add(HTTPClient,1963253,1197,623)
{
URL="https://picstate.com/multiup"
Method=1
Headers="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nAccept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3\r\nReferer: https://picstate.com/login\r\nOrigin: https://picstate.com\r\nUpgrade-Insecure-Requests: 1\r\nTE: Trailers"
UserAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0"
PostData="multiup_sess=c8300a69022b19c2c5d7b2e29513ecc3\r\naction=upload\r\nuploader_0_tmpname=p1e9dmmqarcn3ft9m5fgbt1pe24.JPG\r\nuploader_0_name=test.jpg\r\nuploader_0_status=done\r\nuploader_count=1\r\nprofile_id=1\r\nfolder_id=19588\r\nresize=100\r\nper_row=1\r\ndelimiter=\r\n"
IgnoreInvalidCN=1
Decompress=1
CookieManager="rest"
Point(Headers)
Point(PostData)
Point(onRedirect)
Point(RawHeaders)
Point(UploadFile)
link(onFinish,15528895:doAdd,[(1258,636)(1258,629)])
link(PostData,6655165:GetData,[(1224,590)(1217,590)])
link(UploadFile,8308618:Var3,[(1231,418)])
}
Add(FormatStr,12788471,1134,525)
{
Mask="multiup_sess=%1\r\naction=upload\r\nuploader_0_tmpname=\r\nuploader_0_name=%2\r\nuploader_0_status=done\r\nuploader_count=1\r\nprofile_id=1\r\nfolder_id=19588\r\nresize=100\r\ncustom=resize:\r\nper_row=0\r\ndelimiter= "
link(onFString,6655165:doData,[])
link(Str1,7390642:GetData,[])
link(Str2,3441604:Part,[(1147,513)(1210,513)])
}
Add(BlockFind,14902239,1071,427)
{
IncludeBlock=1
StartBlock=""multiup_sess" : ""
EndBlock="","
link(onSearch,7390642:doData,[])
link(Text,13788333:Text,[(1077,422)(1028,422)])
}
Add(Memo,15528895,1281,623)
{
Left=125
Top=520
Width=400
Height=300
ScrollBars=2
}
Add(EventFromData,7390642,1134,427)
{
link(onEvent,3441604:doPart,[(1185,433)(1185,461)])
}
Add(Hub,15439320,812,378)
{
OutCount=3
link(onEvent1,8993969:doLoadString,[])
link(onEvent2,12788471:doString,[(980,391)(980,531)])
}
Add(FilePartElm,3441604,1204,455)
{
Point(Part)
link(FileName,8308618:Var2,[])
}
Add(EventFromData,6655165,1211,525)
{
}
Add(Button,678333,1064,623)
{
Left=350
Top=60
Width=140
Height=25
Caption="Send img"
link(onClick,1963253:doLoadString,[])
}
Add(GetDataEx,8308618,1204,413)
{
link(Data,2845786:Value,[])
}



Дополнено:
Короче в этом поле нужно указать любые 28 символов и расширение .jpg .Значит проблема не в этом, изображения все равно не грузятся. Приходит статус Upload Error! Please try another uploader. Netspirit, если не трудно посмотрите схему мою, что я не так сделал там?

Редактировалось 2 раз(а), последний 2020-05-28 20:05:33
карма: 0

0
Ответов: 4628
Рейтинг: 749
#266: 2020-05-29 11:18:25 ЛС | профиль | цитата
POSTParams.FileField обязательно надо указывать. Это должен быть атрибут "name" поля <input type="file">, но на странице загрузки он не указан. Вероятно, генерируется скриптом автоматически, но я не смог отследить. Попробовать "uploader_0_name" (и не указывать в PostData) либо "uploader_0".

При копировании схемы в буфер из HiAsm переключай раскладку на кириллицу, чтобы не было крякозябров.

Редактировалось 2 раз(а), последний 2020-05-29 11:39:12
карма: 26

0
Ответов: 107
Рейтинг: 0
#267: 2020-05-29 15:24:07 ЛС | профиль | цитата
Блин, что то не могу я понять что туда вписать нужно, уже перепробовал 100000 вариантов)

Там есть 2 поля. может нужно указать в FileField multiup_sess=value?
<input type="hidden" name="multiup_sess" value="f63ef5aab8d74325e2e5ee55c1da315c" />
<input type="hidden" name="action" value="upload" />

Редактировалось 1 раз(а), последний 2020-05-29 15:54:31
карма: 0

0
Ответов: 4628
Рейтинг: 749
#268: 2020-05-29 16:14:15 ЛС | профиль | цитата
"multiup_sess" ты указал в PostData. В PostData указываются все поля <input> тега <form> в виде name=value, где name/value - одноименные атрибуты тегов <input>. Соответственно, поле отправки файла (<input type="file">) тоже должно иметь атрибут name, который и следует указать в FileField.

Вот что я смог перехватить:

Это должно быть указано в PostData. Но здесь я не вижу поля для отправки файла. Может он был отправлен каким-то фоновым запросом (хотя POST запрос был один), или Firefox просто не показал отправляемого файла. Может Chrome покажет.

Редактировалось 2 раз(а), последний 2020-05-29 16:18:45
карма: 26

0
Ответов: 107
Рейтинг: 0
#269: 2020-05-29 16:17:25 ЛС | профиль | цитата
Я кажется понял в чем может быть дело, у меня первый запрос GET он получает token, multiup_sess и timestamp, потом второй компонент делает запрос POST с обновлением страницы и там уже новые значения token, multiup_sess и timestamp... Или не верно?
карма: 0

0
Ответов: 4628
Рейтинг: 749
#270: 2020-05-29 16:23:51 ЛС | профиль | цитата
germes5558 писал(а):
делает запрос POST с обновлением страницы и там уже новые значения
Сначала выполняется запрос, а потом в ответ может быть новая страница с новыми данными, поэтому не в этом дело. С другой стороны, страница отображает прогресс загрузки файла - а это не было возможно до стандарта html5. Если не ошибаюсь, тогда использовался костыль с двумя запросами - один запрос отправляет файл в фоне, а вторым постоянно запрашивают с сервера прогресс загрузки. Может что-то подобное там реализовано. Но все равно надо поймать именно тот запрос, который посылает файл.
карма: 26

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)