1 (изменено: DD, 2020-02-08 03:47:18)

Тема: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Пробовал ли кто автохоткейно залогиниться в LiveJournal или подключить уже существующие куки? Посмотрел запросы: логин/пароль даны в явном виде, но что и как отправлять, непонятно.

2

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

У вас однотипные вопросы.
Как скачать/залогиниться в vk, rutracker, жж.
Я в какой-то из тем вам уже приводил алгоритм, что и как отправлять.
Сомневаюсь, что в ЖЖ ввели серьёзную защиту.

3 (изменено: DD, 2018-07-02 04:07:10)

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Вопросы однотипные (кстати, на очереди — фейсбук. Шутка!), потому что алгоритмы плавающие, раз на раз не приходятся)). К примеру, сейчас там ответ в виде джисона, из которого более-менее надо знать, что именно  и как оформлять в ссылку. Вот и спрашивал)).

4

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Ну и что, что Json. Json - обычная строка.
Ищите откуда эти данные браузер берет и регуляркой получаете их сами.
А когда вы отправляете данные серверу, то чтобы он знал в каком формате вы их ему отправляете, вы должны заполнить заголовок Content-Type.
Ну и при парсинге сайта лучше отключать джаваскрипт в броузере - если сайт позволяет выполнять действия без джаваскриптов, то должно быть проще.

5

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Строка-то обычная, но если выглядит вот так, как её отправить?

+ открыть спойлер

[{"jsonrpc":"2.0","method":"user.login","params":{"user":"******","password":"******","expire":"never","auth_token":"sessionless:1561706600:/__api/::239b663e9c1ffc84960710dab6bf4b3f06cbf66b"},"id":17}]

6

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Также не нашел примера для AHK, где можно было бы подключить к коду ранее сохраненный куки-файл, а то что-то логиниться слишком сложно.

7 (изменено: Malcev, 2018-07-04 18:43:07)

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

По-вашему откуда броузер берет auth_token?
И

Malcev пишет:

при парсинге сайта лучше отключать джаваскрипт в броузере

А как отправлять куки я вам уже показывал.

8

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Спасибо за терпение и подсказки, дозрел:

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

9 (изменено: DD, 2018-07-04 21:31:48)

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Malcev пишет:

А как отправлять куки я вам уже показывал.

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

10

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

А почему вы не можете распарсить сохраненный файл с кукисами и отправить их?
А Msxml2.XMLHTTP вообще использует куки с IE.

+ DD

11

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Снова встала задача подключения кук из текстового файла. Планируется переключаться между двумя куки файлами, так как если постоянно напрямую заходить с двух профилей на Инстаграм, банят. Есть ли пример подхватывания готового куки?

12

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Не понимаю в чем у вас сложность с куками? Это же обычный заголовок.

13

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Сложность с подключением этого заголовка (кук) к скрипту — не нашел примеров.

14

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Malcev пишет:

А как отправлять куки я вам уже показывал.

15

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Malcev пишет:

Парсите ответ сервера, куки он выдаёт построчно, начиная с "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

16

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

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

17 (изменено: MandarinKa02, 2019-03-11 11:30:33)

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Неправильно с куками работаете. Domain и expires - не является самими куками. Domain указывается для какого домена будет работать кукь, expires - сколько он будет жить(кукь).
Эти данные нужны только браузеру, больше они ни где не фигурируют. А вы их суете в хедер вместе с куком.

18

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

А разве это на что-то может повлиять?

19 (изменено: DD, 2020-02-08 17:22:57)

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Тут на сайте Пензенской библиотеки сложный логин — только через другие сайты (Яндекс с токенами и тп). При этом, если использовать "Msxml2.XMLHTTP", то пишут, что браузер устарел (так как "Msxml2.XMLHTTP", видимо, работает через движок IE7, хотя на компе стоит 11-я, через которую сайт доступен без ограничений), и подсовывают облегченную версию страницы с урезанными данными, которые надо дольше собирать. Дано ли как-то подключить сохраненные из IE11-й куки — в скрипт через "WinHTTP.WinHTTPRequest.5.1", а не "Msxml2.XMLHTTP"?

20

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Код покажите по которому через WinHTTP.WinHTTPRequest.5.1 вы получаете не ту информацию. И какую хотите.

21 (изменено: DD, 2020-02-08 17:34:35)

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Насчёт неполной инфы я ошибся — все айди страниц сразу можно получить и через "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 := ""
}

22

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

У сайта защита довольно простая, сервер генерирует PHPSESSID для сессии, после чего после 9 запроса выдает denied.
Можно после каждого 9 запроса заново создавать WinHTTP.WinHTTPRequest.5.1 объект, ну или вообще перед каждым запросом его создавать.
ЗЫ Как получать, передавать куки я вам уже 100 раз объяснял.

+ DD

23

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Тоже подозревал, что есть какой-то счётчик, и можно его обновлять). Спасибо!

24

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Никак не удается понять, из каких данных получать ссылку на страницу/изображение для книги по адресу. Там это шифруется?

25

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Ищите на вкладке Network запросы вида data:image/png;base64, ...

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

26

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Но в этих запросах содержимое изображения в виде кода фигурирует вместо ссылки. Но самое главное, непонятно, откуда это содержимое бралось. То есть, перед изображениями есть ссылка "...base64?_=1582715950696",  но на каком этапе она сформировалась и как повторить этот запрос?

27

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

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

28

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Такого случая ещё не было, когда возникает ссылка, а откуда взялся элемент, который в ней содержится, неизвестно. При этом, если есть 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

29 (изменено: Malcev, 2020-02-26 18:14:20)

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Вот ссылка - https://vivaldi.dspl.ru/bx0001746/page/21/image/24/base64
Отправляете ее методом get - получаете картинку.

+ DD

30

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

А как вы догадались, что нужно отбросить из ссылки то, что после вопросительного знака?

"?_=1582717246266"

31

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Можно и не отбрасывать, а генерировать и отправлять.
Это epoch time.

32

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

А разве это ссылка на главную картинку?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

33

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Это превьюшка.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

34

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

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
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg
+ DD

35

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Заменить  24 в https://vivaldi.dspl.ru/bx0001746/page/21/image/24/base64
на 96+- и будет нормальное. Джаваскрипт уменьшает.

36

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Ага, точно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

37

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Кстати, там есть сложность узнать точный размер картинки, потому что если вписывать любой — будут искажения в сравнении с размером того изо, которое можно открыть во вкладке браузера. Для этой книги по ссылке даны размеры, и если вписать значение "Width" до точки — то оно начинает примерно соответствовать реальному.

38

Re: AHK: Логин на сайтах (в ЖЖ, Инстаграме и тд)

Не получалось, потому что я ссылку как обычно через браузер открывал, видел ошибку и думал, что через скрипт будет то же самое).