1

Тема: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Всем добра!


oHTML := ComObjCreate("HTMLFile")
oHTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oHTTP.Open("GET", "http://mo-koltushi.ru/")
oHTTP.Send()
oHTTP.WaitForResponse()
MsgBox,,Title,Ready to Write
oHTML.open()
oHTML.write(oHTTP.ResponseText)
oHTML.close()
MsgBox,,Title,Writed

При записи пришедшего ответа появляется такое сообщение.
https://d.radikal.ru/d03/1805/07/6df31868a28e.jpg
Не могу нагуглить, как отключить/проигнорировать, или как-либо ещё предотвратить его появление.

Помогите пожалуйста.

2

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

oHTML.designMode := "on"

3

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

В этом случае, не могу взаимодействовать с DOM-контентом "oHTML":


oHTML := ComObjCreate("HTMLFile")
oHTML.designMode := "on"
oHTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oHTTP.Open("GET", "http://mo-koltushi.ru/")
oHTTP.Send()
oHTTP.WaitForResponse()
oHTML.open()
oHTML.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=edge"">")
oHTML.write(oHTTP.ResponseText)
oHTML.close()
articles := oHTML.querySelectorAll("#content>article")
MsgBox,,Title,% articles.length

Возвращает пустое значение.

4

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Ставьте отключение скриптов после выполнения meta http-equiv=""X-UA-Compatible.
Текущий documentmode проверяется через oHTML.documentmode.

5

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

А как можно поступить в таком случае:


proxyURL := "http://spys.one/proxys/DE/"
; >>--++--<<  >>--++--<<
oHTML := ComObjCreate("HTMLFile")
oHTML.open()
oHTML.write("<meta http-equiv='X-UA-Compatible' content='IE=edge'>")
;oHTML.designMode := "on"
oHTML.close()
oHTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oHTTP.Open("GET", proxyURL, false)
oHTTP.Send()
oHTTP.WaitForResponse()
oHTML.open()
oHTML.write(oHTTP.ResponseText)
oHTML.close()

rows := oHTML.querySelectorAll("table")[2].querySelectorAll("tbody>tr")
itemText := rows[3].children[0].children[1].innerText

MsgBox,,Title,% itemText
ExitApp

Здесь, адрес порта создаётся скриптом и если строку с "designMode" закомментировать, то открывается IE с "about:blank - #" в адресе, но после строки изображающей тело скрипта, есть адрес порта. А без этого, соответственно, не работает.

6

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

proxyURL := "http://spys.one/proxys/DE/"
; >>--++--<<  >>--++--<<
oHTML := ComObjCreate("HTMLFile")
oHTML.write("<meta http-equiv='X-UA-Compatible' content='IE=edge'>")
;oHTML.designMode := "on"
oHTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oHTTP.Open("GET", proxyURL, false)
oHTTP.Send()
oHTTP.WaitForResponse()
oHTML.write(oHTTP.ResponseText)


rows := oHTML.querySelectorAll("table")[2].querySelectorAll("tbody>tr")
itemText := rows[3].children[0].children[1].innerText

MsgBox,,Title,% itemText
ExitApp

7

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

А вы не боитесь запускать на своей машине всякие обфускацированные скрипты?

8

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Например?

9

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Я имел в виду этот:

><script type="text/javascript">eval(function(p,r,o,x,y,s){y=function(c){return(c<r?'':y(parseInt(c/r)))+((c=c%r)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(o--){s[y(o)]=x[o]||y(o)}x=[function(y){return s[y]}];y=function(){return'\\w+'};o=1};while(o--){if(x[o]){p=p.replace(new RegExp('\\b'+y(o)+'\\b','g'),x[o])}}return p}('n=8;c=4;k=2;e=5;o=D^C;f=B^E;g=F^A;a=H^G;s=J^y;l=u^x;d=z^w;r=7;t=6;h=1;i=v^I;p=9;b=3;j=0;m=X^W;q=V^T;K=j^l;N=h^i;U=k^g;M=b^a;L=c^d;O=e^m;P=t^s;S=r^q;R=n^o;Q=p^f;',60,60,'^^^^^^^^^^Zero9Two^Four^Six^OneSevenThree^Eight^Four9Nine^OneOneFive^One^OneThreeSix^Zero^Nine^ZeroEightSeven^Seven6One^Seven^Six0Four^Five^One5Zero^Three^FourSixEight^Two^5404^6107^8085^80^8909^11364^8080^6388^9090^12241^3129^7475^8118^9808^8090^1884^ThreeSevenSixThree^FourSixNineZero^FiveThreeOneTwo^ZeroTwoFiveFour^ZeroFourEightSix^SevenSevenThreeNine^Zero1ZeroSeven^FiveEightFourEight^Seven4TwoOne^6588^NineThreeSevenFive^11030^443^10348'.split('\u005e'),0,{}))
</script>

Но он ничего плохого не делает - просто прячет порты.

10

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Да да, знакомился с контентом страницы. Видно, что эта заэваленная строка содержит константы, которые встречаются позже в динамически создаваемых элементах:

<font class="spy14">159.69.13.232<script type="text/javascript">document.write("<font class=spy2>:<\/font>"+(Two5EightNine^Nine4Eight)+(Six6ZeroOne^Six8Seven))</script><font class="spy2">:</font>80</font>

И из вопроса выше, очевидно, что именно в этом качестве он и был задан. Спасибо за беспокойство.

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

Ещё раз, моя благодарность!

11 (изменено: Malcev, 2018-06-05 04:57:26)

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Я джаваскрипт вообще не знаю, но как я понял тут 2 массива.
Первый с выражениями:

'n=8;c=4;k=2;e=5;o=D^C;f=B^E;g=F^A;a=H^G;s=J^y;l=u^x;d=z^w;r=7;t=6;h=1;i=v^I;p=9;b=3;j=0;m=X^W;q=V^T;K=j^l;N=h^i;U=k^g;M=b^a;L=c^d;O=e^m;P=t^s;S=r^q;R=n^o;Q=p^f;'

Где буквам присвоен порядковый номер, типа a=1, b=2, c=3... A=27, B=28, C=29...
Второй с переменными:

'^^^^^^^^^^Zero9Two^Four^Six^OneSevenThree^Eight^Four9Nine^OneOneFive^One^OneThreeSix^Zero^Nine^ZeroEightSeven^Seven6One^Seven^Six0Four^Five^One5Zero^Three^FourSixEight^Two^5404^6107^8085^80^8909^11364^8080^6388^9090^12241^3129^7475^8118^9808^8090^1884^ThreeSevenSixThree^FourSixNineZero^FiveThreeOneTwo^ZeroTwoFiveFour^ZeroFourEightSix^SevenSevenThreeNine^Zero1ZeroSeven^FiveEightFourEight^Seven4TwoOne^6588^NineThreeSevenFive^11030^443^10348'

При выполнении eval делается замена в выражениях первого массива членами второго массива:
Например из n=8 получается: Seven := 8.
А из o=D^C получается Six0Four := 12241 ^ 9090 := 3155.
В общем защитили от парсига слабенько.

12

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Через регулярки парсится быстрее:

setbatchlines -1
proxyURL := "http://spys.one/proxys/DE/"
oHTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oHTTP.Open("GET", proxyURL, false)
oHTTP.Send()
oHTTP.WaitForResponse()
ResponseText := oHTTP.ResponseText

a := a_tickcount
oHTML := ComObjCreate("HTMLFile")
oHTML.write("<meta http-equiv='X-UA-Compatible' content='IE=edge'>")
oHTML.write(ResponseText)
rows := oHTML.querySelectorAll("table")[2].querySelectorAll("tbody>tr")
itemText := rows[3].children[0].children[1].innerText
result1 := "htmlfile:`ntime: " a_tickcount - a "`n" itemText

a := a_tickcount
letter := ComObjCreate("Scripting.Dictionary")
expression := {}, value := {}
loop 52
{
   if (A_Index <= 26)
      chr := chr(A_Index+96)
   else
      chr := chr(A_Index+38)
   letter.item(chr) := A_Index
}

RegexMatch(ResponseText, "s)return p}\(';?(.+?;)'.+?\^+(.+?)'", var)

Pos :=1, match := ""
While Pos := RegexMatch(var2, "(.+?)(\^|$)", match, pos+strlen(match))
   value[A_Index] := match1

Pos :=1, match := ""
While Pos := RegexMatch(var1, ".+?;", match, pos+strlen(match))
{
   if !InStr(match, "^")
   {
      RegexMatch(match, "(.+?)=(.+?);", matchh)
      expression[value[letter.item(matchh1)]] := matchh2
   }
   else
   {
      RegexMatch(match, "(.+?)=(.+?)\^(.+?);", matchh)
      if (A_Index <= 20)
         expression[value[letter.item(matchh1)]] := value[letter.item(matchh2)] ^ value[letter.item(matchh3)]
      else
         expression[value[letter.item(matchh1)]] := expression[value[letter.item(matchh2)]] ^ expression[value[letter.item(matchh3)]]
   }
}

RegexMatch(ResponseText, "s)<font class=spy14>(.+?)<.+?\+(.+?)</script>", match)
Pos :=1, matchh := port := ""
While Pos := RegexMatch(match2, "\((.+?)\^(.+?)\)", matchh, pos+strlen(matchh))
   port .= expression[matchh1] ^ expression[matchh2]
result2 := "regex:`ntime: " a_tickcount - a "`n" match1 ":" port
msgbox % result1 "`n`n" result2

13

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Очень подробно, благодарю!

И хотя я пока не стремлюсь за сверх скоростями, на будущее, понимание этих принципов - отличный пример для освоения оптимизации!

14

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Самое интересное, что они мой айпи заблокировали.
Хотя я вообще максимум минут 5 непрерывно к ним долбился пока тестировал.

15

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Люто тестируете!
У меня как раз один момент их сервер лежал, не подавая признаков жизни ни в браузере, не в запросах. Не совпадение ли!?

16

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Вряд ли это случилось из-за моих скромных 100 запросах в минуту.
Наверное просто под горячую руку попал.

17

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Мне, Ваша жертва оказалась полезной!
Надеюсь, это не сильно ограничило Вас в возможностях.

18

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Правильно ли понял, что код из 12 сообщения выводит рабочий прокси? Как посредством него скачать какую-нибудь заблокированную Р.надзором стр.?

19

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Нет. В 12 сообщении сравнительный тест, наглядно демонстрирующий отличия между двумя способами.

Переход по адресу, приводит к списку Германских прокси, в котором таблицей представлены "~актуальные" данные их адресов и оба способа получают текст её первого элемента, представляющего адрес и порт прокси.
Чтобы узнать, является ли прокси полученный первым, лучшим из списка, нужно получить значения других элементов его строки(тег <tr>), а так же всех следующих строк и сравнить их значения по критериям, которые Вы можете посчитать допустимыми, выбрав тем самым лучший из списка, или ни одного.

Чтобы показавшийся приемлемым прокси использовать в запросе:


url := "https://адрес_заблокированный_Р_надзором"
proxy := "255.255.255.255:9876"
oHTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oHTTP.Open("GET", url)
oHTTP.SetProxy(2, proxy)
oHTTP.SetRequestHeader("...")
; ...
oHTTP.Send()
+ DD

20 (изменено: DD, 2018-06-20 03:31:07)

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Верно ли записал? —

url := "https://rutracker.org/forum/viewtopic.php?t=180698"
proxy := "207.154.245.20:80"
oHTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oHTTP.Open("GET", url)
oHTTP.SetProxy(2, proxy)
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()
ResponseText := HTTP.ResponseText
MsgBox % ResponseText

А то сколько ни подставляю прокси — не качает.

21

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

А почему у вас объект называется то oHTTP, то просто HTTP? Это не одно и то же, хоть и похоже.

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

22

Re: AHK: Предупреждение системы безопасности при записи в "HTMLFile".

Эта проблема, часто встречается по ночам, когда внимание становится рассеянным и не замечаешь очевидных моментов, особенно, копируя подходящие куски кода из разных проектов чтобы не печатать их ручками.

Вообще, для большего погружения стоит уточнить, что эта приставка в виде "o" к имени переменной обозначает "object". Она вовсе не обязательна, но считается хорошим применением в практике, потому как облегчает читаемость кода обозначая принадлежность переменной. Можно совсем позаморачиваться добавляя приставку каждому типу переменной:


iMyInt := 1 ; int
sMyString := "" ; string
oMyObject := {} ; object
aMyArray := [] ; array
bMyBool := true ; boolean
; ...

Но, поскольку из новичков мало-кто беспокоится об удобочитаемости своего кода и правилах его организации вообще, беспокоясь больше о результате, такие тонкости опускаются.