Тема: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)
Пробовал ли кто автохоткейно залогиниться в LiveJournal или подключить уже существующие куки? Посмотрел запросы: логин/пароль даны в явном виде, но что и как отправлять, непонятно.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Пробовал ли кто автохоткейно залогиниться в LiveJournal или подключить уже существующие куки? Посмотрел запросы: логин/пароль даны в явном виде, но что и как отправлять, непонятно.
У вас однотипные вопросы.
Как скачать/залогиниться в vk, rutracker, жж.
Я в какой-то из тем вам уже приводил алгоритм, что и как отправлять.
Сомневаюсь, что в ЖЖ ввели серьёзную защиту.
Вопросы однотипные (кстати, на очереди — фейсбук. Шутка!), потому что алгоритмы плавающие, раз на раз не приходятся)). К примеру, сейчас там ответ в виде джисона, из которого более-менее надо знать, что именно и как оформлять в ссылку. Вот и спрашивал)).
Ну и что, что Json. Json - обычная строка.
Ищите откуда эти данные браузер берет и регуляркой получаете их сами.
А когда вы отправляете данные серверу, то чтобы он знал в каком формате вы их ему отправляете, вы должны заполнить заголовок Content-Type.
Ну и при парсинге сайта лучше отключать джаваскрипт в броузере - если сайт позволяет выполнять действия без джаваскриптов, то должно быть проще.
Строка-то обычная, но если выглядит вот так, как её отправить?
[{"jsonrpc":"2.0","method":"user.login","params":{"user":"******","password":"******","expire":"never","auth_token":"sessionless:1561706600:/__api/::239b663e9c1ffc84960710dab6bf4b3f06cbf66b"},"id":17}]
Также не нашел примера для AHK, где можно было бы подключить к коду ранее сохраненный куки-файл, а то что-то логиниться слишком сложно.
По-вашему откуда броузер берет auth_token?
И
при парсинге сайта лучше отключать джаваскрипт в броузере
А как отправлять куки я вам уже показывал.
Спасибо за терпение и подсказки, дозрел:
login := "******"
password := "******"
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "https://www.livejournal.com/login.bml", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.Send()
HTTP.WaitForResponse()
RegexMatch(HTTP.ResponseText, "s)name=""lj_form_auth"" value=""([^""]*)""", match)
PostData := "lj_form_auth=" match1 "&ref=&returnto=%2F&user=" login "&password=" password "&remember_me=1&action%3Alogin="
StringReplace, PostData, PostData, :, `%3A, All
HTTP.Open("POST", "https://www.livejournal.com/login.bml", true)
HTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.Send(PostData)
HTTP.WaitForResponse()
If Instr(HTTP.ResponseText, "-->Выйти<!--")
msgbox All Ok!
Else
msgbox Failed!
return
А как отправлять куки я вам уже показывал.
Это здесь? Но там вроде отправка кук в виде текста, а не подключение текстового файла с куками (который можно заранее сохранить из браузера)?
А почему вы не можете распарсить сохраненный файл с кукисами и отправить их?
А Msxml2.XMLHTTP вообще использует куки с IE.
Снова встала задача подключения кук из текстового файла. Планируется переключаться между двумя куки файлами, так как если постоянно напрямую заходить с двух профилей на Инстаграм, банят. Есть ли пример подхватывания готового куки?
Не понимаю в чем у вас сложность с куками? Это же обычный заголовок.
Сложность с подключением этого заголовка (кук) к скрипту — не нашел примеров.
А как отправлять куки я вам уже показывал.
Парсите ответ сервера, куки он выдаёт построчно, начиная с "Set-Cookie: ".
Эти куки вы объединяете с помощью "; " и потом посылаете так:cookies := "a=b; b=c; c=d" HTTP.SetRequestHeader("Cookie", cookies)
Не срабатывает. В браузере было примерно так:
set-cookie:ds_user_id=10843000607; Domain=.instagram.com; expires=Sat, 08-Jun-2019 21:04:31 GMT; Max-Age=7776000; Path=/; Secure
set-cookie:rur=FTW; Domain=.instagram.com; HttpOnly; Path=/; Secure
set-cookie:csrftoken=5hjEj9NEEnplGRg1rVdpm0BETB8EEl4o; Domain=.instagram.com; expires=Sun, 08-Mar-2020 21:04:31 GMT; Max-Age=31449600; Path=/; Secure
set-cookie:urlgen="{\"183.199.11.49\": 31324}:1h35cV:QflBEEnnhJ6h6P8EEThrKBJBieo"; Domain=.instagram.com; HttpOnly; Path=/; Secure
Так запускал:
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
cookies := "ds_user_id=10843000607; Domain=.instagram.com; expires=Sat, 08-Jun-2019 21:04:31 GMT; Max-Age=7776000; Path=/; rur=FTW; Domain=.instagram.com; HttpOnly; Path=/; csrftoken=5hjEj9NEEnplGRg1rVdpm0BETB8EEl4o; Domain=.instagram.com; expires=Sun, 08-Mar-2020 21:04:31 GMT; Max-Age=31449600; Path=/; urlgen=""{\""183.199.11.49\"": 31324}:1h35cV:QflBEEnnhJ6h6P8EEThrKBJBieo""; Domain=.instagram.com; HttpOnly; Path=/"
shortcode := "BseGBTaBSWB"
URL := "https://www.instagram.com/p/" shortcode "/"
HTTP.Open("GET", URL, true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.SetRequestHeader("Cookie", cookies)
HTTP.Send()
HTTP.WaitForResponse()
ResponseText := HTTP.ResponseText
fileappend, %ResponseText%, %A_ScriptDir%\(((%shortcode%%a_now%.txt, UTF-8
;msgbox % ResponseText
Return
Отправляете правильно.
Без понятия какие механизмы использует инстаграм для определения ботов, но думаю, что с отключенным джаваскрипт можно обмануть любой алгоритм вычисления фингерпринта.
Неправильно с куками работаете. Domain и expires - не является самими куками. Domain указывается для какого домена будет работать кукь, expires - сколько он будет жить(кукь).
Эти данные нужны только браузеру, больше они ни где не фигурируют. А вы их суете в хедер вместе с куком.
А разве это на что-то может повлиять?
Тут на сайте Пензенской библиотеки сложный логин — только через другие сайты (Яндекс с токенами и тп). При этом, если использовать "Msxml2.XMLHTTP", то пишут, что браузер устарел (так как "Msxml2.XMLHTTP", видимо, работает через движок IE7, хотя на компе стоит 11-я, через которую сайт доступен без ограничений), и подсовывают облегченную версию страницы с урезанными данными, которые надо дольше собирать. Дано ли как-то подключить сохраненные из IE11-й куки — в скрипт через "WinHTTP.WinHTTPRequest.5.1", а не "Msxml2.XMLHTTP"?
Код покажите по которому через WinHTTP.WinHTTPRequest.5.1 вы получаете не ту информацию. И какую хотите.
Насчёт неполной инфы я ошибся — все айди страниц сразу можно получить и через "WinHTTP.WinHTTPRequest.5.1". Но дело в том, что если не залогиниться, после 9-той картинки — они подменяются заданной картинкой с надписью "denied". Не могу понять, как использовать "Msxml2.XMLHTTP" (с логином в IE) при скачивании изображений —
XMLHTTP := ComObjCreate("Msxml2.XMLHTTP.6.0")
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
User_Agent := "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"
list =
(
17d7411ea420d54c92a3
17d7411ea421394c92a3
17d7411ea4219d4c92a3
17d7411ea422014c92a3
17d7411ea422654c92a3
17d7411ea422c94c92a3
17e1411ea41f454c92a3
17e1411ea41fa94c92a3
17e1411ea4200d4c92a3
17e1411ea420714c92a3
17e1411ea420d54c92a3
17e1411ea421394c92a3
17e1411ea4219d4c92a3
17e1411ea422014c92a3
17e1411ea422654c92a3
17e1411ea422c94c92a3
17eb411ea41f454c92a3
17eb411ea41fa94c92a3
17eb411ea4200d4c92a3
17eb411ea420714c92a3
17eb411ea420d54c92a3
17eb411ea421394c92a3
17eb411ea4219d4c92a3
17eb411ea422014c92a3
17eb411ea422654c92a3
17eb411ea422c94c92a3
17f5411ea41f454c92a3
17f5411ea41fa94c92a3
17f5411ea4200d4c92a3
17f5411ea420714c92a3
17f5411ea420d54c92a3
17f5411ea421394c92a3
17f5411ea4219d4c92a3
17f5411ea422014c92a3
)
Loop, Parse, list, `n, `r
{
URL := "https://el__i_b_r_ary.ta_m_b_ov_li_b.ru/?eimg=" A_LoopField ".300x300&r=0"
StringReplace, URL, URL, _,, All
HTTP.Open("GET", URL, true) ;!!0=XMLHTTP/true=HTTP
HTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7")
HTTP.SetRequestHeader("User-Agent", User_Agent)
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.Send()
HTTP.WaitForResponse()
Body := HTTP.ResponseBody
pData := NumGet(ComObjValue(Body), A_PtrSize = 8? 16:12, "ptr")
File := FileOpen(A_ScriptDir "\" a_now ".jpg", "w")
File.RawWrite(pData + 0, Body.MaxIndex() + 1)
sleep, 50
PicBody := ""
list_line := ""
nn := ""
pData := ""
File := ""
Body := ""
RTxt := ""
}
У сайта защита довольно простая, сервер генерирует PHPSESSID для сессии, после чего после 9 запроса выдает denied.
Можно после каждого 9 запроса заново создавать WinHTTP.WinHTTPRequest.5.1 объект, ну или вообще перед каждым запросом его создавать.
ЗЫ Как получать, передавать куки я вам уже 100 раз объяснял.
Тоже подозревал, что есть какой-то счётчик, и можно его обновлять). Спасибо!
Никак не удается понять, из каких данных получать ссылку на страницу/изображение для книги по адресу. Там это шифруется?
Ищите на вкладке Network запросы вида data:image/png;base64, ...
Но в этих запросах содержимое изображения в виде кода фигурирует вместо ссылки. Но самое главное, непонятно, откуда это содержимое бралось. То есть, перед изображениями есть ссылка "...base64?_=1582715950696", но на каком этапе она сформировалась и как повторить этот запрос?
Вы же уже не первый год достаете информацию с сайтов, а вопросы такие будто только вчера начали.
Как отправить запрос?
Копируете эту ссылку и отправляете, если ответ не приходит, то отправляете хедеры и кукисы.
Такого случая ещё не было, когда возникает ссылка, а откуда взялся элемент, который в ней содержится, неизвестно. При этом, если есть POST-запросы, то они пустые.
WinHTTP := ComObjCreate("WinHTTP.WinHttpRequest.5.1")
;url := "https://vivaldi.dspl.ru/bx0001746/page/21/image/24/base64?_=1582717246266"
url := "https://vivaldi.dspl.ru/bx0001746/open/statistics"
cookies := "wctx_autosignin=wctx=aHR0cDovL3ZpdmFsZGkuZHNwbC5ydS91c2VyL2F1dG9zaWduaW4=&keepCookie=True; ASP.NET_SessionId=zusbkhcxro3tncq2j5xas0vp " ;Куки из Хрома
;cookies := "__utma=264150027.593350937.1582702615.1582718226.1582724884.3; __utmb=264150027.1.10.1582724884; __utmz=264150027.1582702615.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); ASP.NET_SessionId=mrga2jgm0iai1equxmlnzi5m; __utmc=264150027; __utmt=1; " ;Куки из IE
WinHTTP.Open("POST", url, 0)
WinHTTP.SetRequestHeader("Host", "vivaldi.dspl.ru")
WinHTTP.SetRequestHeader("Accept", "*/*")
WinHTTP.SetRequestHeader("Connection", "keep-alive")
WinHTTP.SetRequestHeader("Cookie", cookies)
WinHTTP.SetRequestHeader("Cookie2", "$Version=1")
WinHTTP.SetRequestHeader("X-Viva-Client", "Web/1.0")
WinHTTP.SetRequestHeader("X-Requested-With", "XMLHttpRequest")
WinHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36")
WinHTTP.SetRequestHeader("Sec-Fetch-Mode", "cors")
WinHTTP.SetRequestHeader("Sec-Fetch-Site", "same-origin")
WinHTTP.SetRequestHeader("Referer", "https://vivaldi.dspl.ru/bx0001746/view")
WinHTTP.SetRequestHeader("Accept-Encoding", "gzip, deflate, br")
WinHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7")
WinHTTP.Send()
MsgBox % WinHTTP.ResponseText
Вот ссылка - https://vivaldi.dspl.ru/bx0001746/page/21/image/24/base64
Отправляете ее методом get - получаете картинку.
А как вы догадались, что нужно отбросить из ссылки то, что после вопросительного знака?
"?_=1582717246266"
Можно и не отбрасывать, а генерировать и отправлять.
Это epoch time.
А разве это ссылка на главную картинку?
Это превьюшка.
WinHTTP := ComObjCreate("Msxml2.XMLHTTP.6.0")
url := "https://vivaldi.dspl.ru/bx0001746/page/21/image/24/base64"
WinHTTP.Open("GET", url, 0)
WinHTTP.SetRequestHeader("X-Requested-With", "XMLHttpRequest")
WinHTTP.Send()
base64 := WinHTTP.ResponseText
length := CryptStringToBinary(base64, data)
pToken := GdipStartup()
pBitmap := GetBitmapFromData(&data, length, hBitmap)
VarSetCapacity(data, 0)
GdipGetImageDimensions(pBitmap, Width, Height)
DllCall("gdiplus\GdipDisposeImage", Ptr, pBitmap)
GdipShutdown(pToken)
Gui, -DPIScale +LastFound
Gui, Margin, 0, 0
Gui, Add, Pic, w%Width% h%Height%, HBITMAP:%hBitmap%
Gui, Show
DllCall("DeleteObject", Ptr, hBitmap)
Return
GuiClose:
ExitApp
CryptStringToBinary(string, ByRef outData, formatName := "CRYPT_STRING_BASE64")
{
static formats := { CRYPT_STRING_BASE64: 0x1
, CRYPT_STRING_HEX: 0x4
, CRYPT_STRING_HEXRAW: 0xC }
fmt := formats[formatName]
DllCall( "Crypt32\CryptStringToBinary", "Ptr", &string, "UInt", StrLen(string), "UInt", fmt
, "UInt", 0, "UIntP", bytes, "UIntP", 0, "UIntP", 0 )
VarSetCapacity(outData, bytes)
DllCall( "Crypt32\CryptStringToBinary", "Ptr", &string, "UInt", StrLen(string), "UInt", fmt
, "Str", outData, "UIntP", bytes, "UIntP", 0, "UIntP", 0 )
Return bytes
}
GetBitmapFromData(pData, nSize, ByRef hBitmap)
{
pIStream := DllCall("Shlwapi\SHCreateMemStream", "Ptr", pData, "UInt", nSize, "Ptr")
DllCall("gdiplus\GdipCreateBitmapFromStream", "Ptr", pIStream, "PtrP", pBitmap)
ObjRelease(pIStream)
DllCall("gdiplus\GdipCreateHBITMAPFromBitmap", "Ptr", pBitmap, "PtrP", hBitmap, "UInt", 0xFFFFFFFF)
Return pBitmap
}
GdipGetImageDimensions(pBitmap, ByRef Width, ByRef Height)
{
DllCall("gdiplus\GdipGetImageWidth", "Ptr", pBitmap, "UIntP", Width)
DllCall("gdiplus\GdipGetImageHeight", "Ptr", pBitmap, "UIntP", Height)
}
GdipStartup()
{
if !DllCall("GetModuleHandle", "Str", "gdiplus", "Ptr")
DllCall("LoadLibrary", "Str", "gdiplus")
VarSetCapacity(si, A_PtrSize = 8 ? 24 : 16, 0), si := Chr(1)
DllCall("gdiplus\GdiplusStartup", "PtrP", pToken, "Ptr", &si, "Ptr", 0)
return pToken
}
GdipShutdown(pToken)
{
DllCall("gdiplus\GdiplusShutdown", "Ptr", pToken)
if hModule := DllCall("GetModuleHandle", "Str", "gdiplus", "Ptr")
DllCall("FreeLibrary", "Ptr", hModule)
return 0
}
Заменить 24 в https://vivaldi.dspl.ru/bx0001746/page/21/image/24/base64
на 96+- и будет нормальное. Джаваскрипт уменьшает.
Ага, точно.
Кстати, там есть сложность узнать точный размер картинки, потому что если вписывать любой — будут искажения в сравнении с размером того изо, которое можно открыть во вкладке браузера. Для этой книги по ссылке даны размеры, и если вписать значение "Width" до точки — то оно начинает примерно соответствовать реальному.
Не получалось, потому что я ссылку как обычно через браузер открывал, видел ошибку и думал, что через скрипт будет то же самое).
А Msxml2.XMLHTTP вообще использует куки с IE.
Как использовать "Msxml2.XMLHTTP" при скачивании изображений? Вот такой фрагмент кода должен подхватывать куки из IE? —
HTTP := ComObjCreate("Msxml2.XMLHTTP.6.0")
HTTP.Open("GET", URL, 0)
HTTP.SetRequestHeader("User-Agent", User_Agent)
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.Send()
;HTTP.WaitForResponse()
Body := HTTP.ResponseBody
pData := NumGet(ComObjValue(Body), A_PtrSize = 8? 16:12, "ptr")
File := FileOpen(A_ScriptDir "\" a_now ".jpg", "w")
File.RawWrite(pData + 0, Body.MaxIndex() + 1)
А что мешает самому это проверить?
Залогиньтесь на каком-нибудь сайте в IE, после чего откройте его через скрипт и посмотрите залогинены или нет.
Проверка нужна именно на картинке. Это я пытаюсь скачать картинку с архив.орг через куки в IE.
Без понятия.
Надо смотреть по ситуации.
Я IE куки использовал (копировал в winhttprequest) только для обхода обновленной защиты клаудфларе.
Прочитал все 42 сбщ, и не понял, мы куда сейчас авторизуемся?
Могу помочь с примерами.
wladkokopops
Надо бы на archive.org. Вот вроде воспроизвел все, но не работает:
mail := "mailmailmailmail@gmail.com"
pass := "passpasspasspasspasspass"
GoSub, Boundary
GoSub, login
Boundary:
Boundary := RandomBoundary()
data =
(
-----------------------------%Boundary%
Content-Disposition: form-data; name="username"
%mail%
-----------------------------%Boundary%
Content-Disposition: form-data; name="password"
%pass%
-----------------------------%Boundary%
Content-Disposition: form-data; name="remember"
true
-----------------------------%Boundary%
Content-Disposition: form-data; name="referer"
https://archive.org/details/%page_code%
-----------------------------%Boundary%
Content-Disposition: form-data; name="login"
true
-----------------------------%Boundary%
Content-Disposition: form-data; name="submit_by_js"
true
-----------------------------%Boundary%--
)
return
login:
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("POST", "https://archive.org/account/login", true)
HTTP.SetRequestHeader("User-Agent", User_Agent)
HTTP.SetRequestHeader("Cookie", "test-cookie=1")
HTTP.SetRequestHeader("Accept", "*/*")
HTTP.SetRequestHeader("Connection", "Keep-Alive")
HTTP.SetRequestHeader("DNT", "1")
HTTP.SetRequestHeader("Host", "archive.org")
HTTP.SetRequestHeader("Accept-Language", "ru-RU")
HTTP.SetRequestHeader("Referer", "https://archive.org/account/login")
HTTP.SetRequestHeader("Accept-Encoding", "gzip, deflate")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.SetRequestHeader("Content-Type", "multipart/form-data; boundary=---------------------------" Boundary)
HTTP.Send(data)
HTTP.WaitForResponse()
Return
RandomBoundary()
{
str := "0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z"
Sort, str, D| Random
str := StrReplace(str, "|")
Return SubStr(str, 1, 14)
}
У вас сложности на ровном месте.
mail := "mailmailmailmail@gmail.com"
pass := "passpasspasspasspasspass"
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("POST", "https://archive.org/account/login", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.SetRequestHeader("content-type", "application/x-www-form-urlencoded")
HTTP.SetRequestHeader("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9")
HTTP.SetRequestHeader("origin", "https://archive.org")
HTTP.SetRequestHeader("referer", "https://archive.org/account/login")
HTTP.SetRequestHeader("sec-fetch-dest", "document")
HTTP.SetRequestHeader("sec-fetch-mode", "navigate")
HTTP.SetRequestHeader("sec-fetch-site", "same-origin")
HTTP.SetRequestHeader("sec-fetch-user", "?1")
HTTP.SetRequestHeader("upgrade-insecure-requests", "1")
HTTP.SetRequestHeader("cookie", "test-cookie=1")
HTTP.Send("login=true&username=" URIEncode(email) "&password=" URIEncode(password) "&referer=https%3A%2F%2Farchive.org%2F&submit-to-login=Log+in")
HTTP.WaitForResponse()
msgbox % clipboard := HTTP.ResponseText
URIEncode(str, encoding := "UTF-8")
{
VarSetCapacity(var, StrPut(str, encoding))
StrPut(str, &var, encoding)
While code := NumGet(Var, A_Index - 1, "UChar")
{
bool := (code > 0x7F || code < 0x30 || code = 0x3D)
UrlStr .= bool ? "%" . Format("{:02X}", code) : Chr(code)
}
Return UrlStr
}
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться