1 (изменено: anerevandrey, 2017-11-02 19:49:36)

Тема: AHK: Выполнение javasсript через АХК

Доброго времени суток у меня возникла проблема есть javascript рабочий уже проверенно, но не знаю как его выполнить в Explorer через АХК прошу помочь, заранее благодарен.

ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := true
ie.Navigate("URL")
	while ie.readystate <> 4
	continue
javascript:$(".like").each(function(){ $(this).click() });

2 (изменено: teadrinker, 2017-11-02 21:46:12)

Re: AHK: Выполнение javasсript через АХК

Хотел ответить, что невозможно никак, однако всё же решил сначала попробовать. Оказалось — не поверите — можно запустить код на jQuery через AHK!!! Предлагаю желающим попытаться сначала самостоятельно.

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

3

Re: AHK: Выполнение javasсript через АХК

Почему же не поверим?
Я уже постил тут код выполнения джаваскрипта.

IID := "{332C4427-26CB-11D0-B483-00C04FD90119}"   ;// IID_IHTMLWindow2
 
oIE := ComObjCreate("InternetExplorer.Application")
oIE.navigate("http://help.dottoro.com/external/examples/ljwcseaq/onmousedown_4.htm")
oIE.visible := True, oIEHWND := oIE.HWND
WinMaximize ahk_id %oIEHWND%
While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
   Sleep, 10
 
window := ComObj(9,ComObjQuery(oIE,IID,IID),1)
 
window.OnButtonDown(button := oIE.document.getElementById("testButton"))
sleep 200
window.OnButtonUp()

Алгоритм такой же.
Пример с оф.форума:

; Set Vars
IID := "{332C4427-26CB-11D0-B483-00C04FD90119}"   ;// IID_IHTMLWindow2
Windows := ComObjCreate("Shell.Application").Windows()
ieCount := Windows.Count

; Launch IE
Run, iExplore.exe, , , pid
WinWait ahk_pid %pid%
WinGet, hwnd, ID, ahk_pid %pid%

; Wait for IE to get added to the Shell.Application.Windows collection
while ieCount = Windows.Count
    sleep 10

; Get IE
for ie in Windows
    if (ie.hwnd = hwnd)
        Break
    else
        ie := ""
if Not ie {
    MsgBox Error
    return
}

; Wait for IE to load
while ie.busy
    sleep 100

; Insert jQuery
jQscript := ie.document.createElement("script")
jQscript.src := "https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"
ie.document.documentElement.appendChild(jQscript)

; Get Window object with proper permissions
window := ComObject(9,ComObjQuery(ie,IID,IID),1)

; Get jQuery body object
try body := window.eval("$('body')")
catch ; use execScript when eval (IE11+) fails
	body := window.execScript("$('body')")

; Call some jQuery
body.css("border", "4px solid red")

4 (изменено: teadrinker, 2017-11-03 11:32:48)

Re: AHK: Выполнение javasсript через АХК

А я и не знал раньше. У меня немного по-другому получилось:

#Persistent
oHttp := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oHttp.Open("GET", "https://code.jquery.com/jquery-3.2.1.min.js")
oHttp.Send()
jQuery := oHttp.responseText
oHttp := ""

wb := ComObjCreate("InternetExplorer.Application")
OnExit( Func("Exit").Bind(wb) )
wb.Visible := true

wb.Navigate("http://forum.script-coding.com/index.php")
Loop
   Sleep, 200
until !(wb.ReadyState != 4 || wb.Busy || wb.document.readyState != "Complete")

S := ObjBindMethod(wb.document.parentWindow, "execScript")
S.(JQuery)
S.("$('body').css('background-color', '#144D80')")
S.("$('.gen-content').css('background-color', '#FF7C40')")
S.("$('#brd-title').children().before('<img src=""https://api.jquery.com/favicon.ico"" height=""22"" width=""22"">')")
S.("$('#brd-title').children().text('  jQuery').css('color', '#043D70')")
S.("$('#brd-title').next().remove()")
Return

Exit(ie)  {
   try ie.Quit()
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Выполнение javasсript через АХК

Спасибо за помощь, жаль что я в этом плохо разбираюсь, надеюсь как не будь найду способ как применить это для своих целей)

6 (изменено: 1srafel, 2025-03-05 21:46:21)

Re: AHK: Выполнение javasсript через АХК

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

proxy := "127.0.0.1:18080"
url := "https://nitter.space/romor_on/status/1830312179385712641#m"

WinHTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")

WinHTTP.Open("GET", url, 1)
WinHTTP.SetProxy(2, proxy)
WinHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
WinHTTP.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.7")
WinHTTP.SetRequestHeader("accept-language", "ru-RU,ru;q=0.9")
WinHTTP.SetRequestHeader("referer", url)
WinHTTP.SetRequestHeader("Cookie", "; ")
WinHTTP.Send()
WinHTTP.WaitForResponse()
ResponseText := WinHTTP.ResponseText
msgbox %ResponseText%

7

Re: AHK: Выполнение javasсript через АХК

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

8

Re: AHK: Выполнение javasсript через АХК

А разве WinHTTP.WinHTTPRequest.5.1 автоматически куки не вставляет?
UPD: А, понял, имеешь в виду куки уже после проверки.

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

9 (изменено: 1srafel, 2025-03-06 06:04:20)

Re: AHK: Выполнение javasсript через АХК

Malcev
Мне бы хотелось самому попробовать, имитировав запуск js, как на той странице - то есть то, о чем Вы писали здесь:

10

Re: AHK: Выполнение javasсript через АХК

teadrinker
Тут задействован такого типа Anti-DDoS.

11

Re: AHK: Выполнение javasсript через АХК

Ну если хочется самому, то вам надо понять, что делает данный скрипт и подменить аргументы посылаемые браузером.
https://nitter.space/cdn-cgi/challenge- … 8/main.js?

12

Re: AHK: Выполнение javasсript через АХК

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

13 (изменено: Malcev, 2025-03-06 19:09:03)

Re: AHK: Выполнение javasсript через АХК

Это невозможно.
Там передаваемый хеш создается из свойств браузерного объекта window, который присутствует исключительно в браузере.