1 (изменено: Foma, 2015-04-07 01:42:05)

Тема: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Я уже пытался реализовать что-то подобное AHK: Передача данных через общую папку в локальной сети, но слишком медленно получается. Паузы то 1 секунда, а то и 3. А надо-то всего передать 40-50 символов.
Какими способами с помощью AHK можно это осуществить?

2

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Foma, ознакомьтесь с оформлением ссылок, отредактируйте свой пост.

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

3

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Спасибо.

4 (изменено: YMP, 2015-04-07 07:54:36)

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Если IP второго компьютера известен, то можно использовать сокеты. Например, разобраться-таки с AHKsock или что-то своё сымпровизировать.

Вероятно, нужно ещё будет разрешить там входящее подключение в фаерволе. А может, и исходящее на первом компьютере, смотря что за фаервол.

5

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Судя по тому, что там 12 страниц обсуждения, даже с английским там будет не просто разобраться. А уж без, и шанса нет. Всё же попробую, а пока вопросы по другим способам.

  Если купить место под сайт на сервере и через него обмениваться? IP там будет постоянный всегда. Как тогда  можно будет передавать и читать информацию? Создавать файл, отправлять, скачивать, читать? Можно этот процесс сократить по времени в 1-2 секунды?
  А ещё варианты есть?

6

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Как я уже предлагал, установить какой-нибудь чат.

7

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Foma пишет:

  Если купить место под сайт на сервере и через него обмениваться? IP там будет постоянный всегда.

А что, у ваших компьютеров в локальной сети IP непостоянные?

8

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

А этот код не работает?
http://forum.script-coding.com/viewtopi … 302#p56302

9

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

ypppu пишет:

Как я уже предлагал, установить какой-нибудь чат.

   А примеры можно? Хочется видеть, как это реализовано. Как-то мне сомнительно, что это будет достаточно скрыто.

10

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

YMP пишет:
Foma пишет:

  Если купить место под сайт на сервере и через него обмениваться? IP там будет постоянный всегда.

А что, у ваших компьютеров в локальной сети IP непостоянные?

  Это не проблема. Мне кажется, что тут с фаерволом больше проблем будет. Но главное суметь реализовать. Я в этих AHKsocks ничего не понял.

11

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Malcev пишет:

А этот код не работает?
http://forum.script-coding.com/viewtopi … 302#p56302

  Тщательно не просматривал, там вроде тема несколько  другая.

12

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Скачиваете какой-нибудь простой чат вроде этого. Устанавливаете его на двух компьютерах. Далее 1ый скрипт посылает сообщения и нажатия кнопок, а 2ой считывает текст периодически либо по извещению. Окно чата можно скрыть, нажатия посылать командой ControlSend.

13

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Тот, что по ссылке не работает. Не хочется использовать общеизвестные программы. На AHK ничего близкого не написано?

14

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Тщательно не просматривал, там вроде тема несколько  другая.

А по-моему та же. Только допилить надо.

15

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Malcev пишет:

А этот код не работает?
http://forum.script-coding.com/viewtopi … 302#p56302

  Посмотрел код, ничего не понял. Запустил, ничего не происходит. Комментариев не нашёл. Что-то посоветуете?

16

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

http://forum.script-coding.com/viewtopic.php?id=9074

17

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Хм... Можно сделать с GUI , считывая и записывая ini файл.

18

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

  Спасибо, но там всё-таки вышли из локалки, плюс использовали сторонний общеизвестный софт.

19

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Может им это оказалось удобнее.
Но я сам долгое время пользуюсь скриптом от Александра_ и меня все устраивает.

20 (изменено: Malcev, 2016-03-24 05:42:38)

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Понадобилось передавать компьютерам не локальной сети сообщения.
Фтп отпадает, так как ненадежный он у меня и притормаживает.
Порты открывать мне никто не даст.
Ничего другого не придумал, как постить информацию на какой-нибудь сервис и оттуда считывать.
Решил на github, так как вроде отсутствует капча.
В итоге отправляет примерно за 1100-1300мс.

Global http := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
Global access_token := "9879876097097097097"   ; ваш token
number := "6876969869869"     ;   номер Gista
newText := "Privet"

codes := net("Get","https://api.github.com/gists/" number)
for a,b in {url:"raw_url",currentfile:"filename",currentid:"id"}
{
   RegExMatch(codes,"U)"Chr(34) b Chr(34) ":" Chr(34) "(.*)" chr(34),found)
   %a%:=found1
}
;msgbox % net("GET",url)    ;  получение текста
newText := RegExReplace(newText,"([" Chr(34) "\\])","\$1")
for a,b in {"`n":"\n","`t":"\t","`r":""}
   StringReplace,newText,newText,%a%,%b%,All
json=
(
{"description":"testing","public":false,"files":{"%currentfile%":{"content":"%newText%"}}}
)
net("PATCH", "https://api.github.com/gists/" currentid, json)
msgbox Done
return


net(verb,url,code="")
{
   http.open(verb,url)
   http.SetRequestHeader("Authorization","Bearer " access_token)
   http.send(code)
   return http.ResponseText
}

Скомуниздил отсюда:
https://gist.github.com/maestrith/6041876

21 (изменено: Malcev, 2023-02-11 21:35:33)

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Сейчас попробовал снова - столкнулся с лимитом максимального количества обращений не более 60 за час.
А на днях вообще апи у них не работал.
Переписал без апи:

login := "login"
password := "pass"
gist := "gist id"
NewText := "privet!"

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

; логинимся
HTTP.Open("GET", "https://github.com/login", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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.send()
HTTP.WaitForResponse()
RegexMatch(HTTP.ResponseText, "s)name=""authenticity_token"" value=""(.+?)"".+?name=""timestamp"" value=""(.+?)"".+?name=""timestamp_secret"" value=""(.+?)""", match)
Post := "commit=Sign+in&authenticity_token=" match1 "&login=" login "&password=" password "&webauthn-support=supported&webauthn-iuvpaa-support=unsupported&return_to=https%3A%2F%2Fgithub.com%2Flogin&allow_signup=&client_id=&integration=&required_field_073c=&timestamp=" match2 "&timestamp_secret=" match3

HTTP.Open("POST", "https://github.com/session", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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", "application/x-www-form-urlencoded")
HTTP.send(Post)
HTTP.WaitForResponse()

; редактируем гист
HTTP.Open("GET", "https://gist.github.com/" login "/" gist "/edit", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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.send()
HTTP.WaitForResponse()
token := RegexReplace(HTTP.ResponseText, "s)^.*id=""edit_gist_.+?name=""authenticity_token"" value=""(.+?)"".*$", "$1")
gistLink := RegexReplace(HTTP.ResponseText, "s)^.*gist\[contents]\[]\[oid]""\R\s+?value=""(.+?)"".*$", "$1")
filename := RegexReplace(HTTP.ResponseText, "s)^.*class=""js-new-filename-field"" value=""(.+?)"".*$", "$1")
Post := "_method=put&authenticity_token=" token "&gist%5Bdescription%5D=&gist%5Bcontents%5D%5B%5D%5Boid%5D=" gistLink "&gist%5Bcontents%5D%5B%5D%5Bname%5D=" filename "&new_filename=" filename "&content_changed=true&gist%5Bcontents%5D%5B%5D%5Bvalue%5D=" UriEncode(NewText)

HTTP.Open("POST", "https://gist.github.com/" login "/" gist, true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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", "application/x-www-form-urlencoded")
HTTP.send(Post)
HTTP.WaitForResponse()

; читаем измененный гист
HTTP.Open("GET", "https://gist.github.com/" login "/" gist, true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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.send()
HTTP.WaitForResponse()
msgbox % ResponseText := RegexReplace(HTTP.ResponseText, "s)^.*<textarea class=""form-control js-task-list-field d-none"" name=""gist\[content]"".*?>(.*?)</textarea>.*$", "$1")
return


UriEncode(Uri)
{
   VarSetCapacity(Var, StrPut(Uri, "UTF-8"), 0)
   StrPut(Uri, &Var, "UTF-8")
   f := A_FormatInteger
   SetFormat, IntegerFast, H
   While Code := NumGet(Var, A_Index - 1, "UChar")
      If (Code >= 0x30 && Code <= 0x39 ; 0-9
         || Code >= 0x41 && Code <= 0x5A ; A-Z
         || Code >= 0x61 && Code <= 0x7A) ; a-z
         Res .= Chr(Code)
      Else
         Res .= "%" . SubStr(Code + 0x100, -1)
   SetFormat, IntegerFast, %f%
   Return, Res
}

22

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

По последнему коду не удалось нагуглить - откуда берется "gist id"?

23

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

https://gist.github.com/username/b5a3d0031d83293a428ea8d90a78eec0.

24

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Когда прописываю с указанным вами ID - скрипт выводит сообщение "Not Found".

25

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Надо своё id вписывать.

26 (изменено: inseption86, 2023-02-11 00:50:14)

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

.

27

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

А как свой id получить?

28

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Копируете с адресной строки.
Подравил код.

29

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Не удалось понять: в результате перехода по какой ссылке gist id появится в адресной строке?

30

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

https://gist.github.com/csdahlberg/b303 … 4f4c00038a
b303a4f47f649a30c76eeb4f4c00038a - gist id.

31

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Ввел свой логин, пароль и этот gist id, но в результате запуска скрипт выводит сообщение "Not Found".

32

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Значит что-то не так сделали.
У меня работает.

33

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

При переходе по вашей предыдущей ссылке - страница не найдена. gist id имеет временное действие? Это аналог токена?

34

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Хммм. А зачем вы берете айди чужих гистов?
Гист айди постоянен для каждого гиста.
Заходите в свои гисты, выбираете нужный и копируете его айди.

35

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Правильно понимаю, что скрипт выводит текст гиста, а дополнительных записей в гист не делает?

36

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Я же в коде написал, что он делает.

; логинимся
; редактируем гист
; читаем измененный гист

37

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Значит, оправку текста делает предыдущий код?

38

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Нет. Что по-вашему означает

; редактируем гист

?

39

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Имелся в виду код из 20-го поста, а не 21-го. Там же оправка текста производится?

40

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

И в 20 посту и в 21 посту производится отправка текста.
В 20 через официальное апи (с ограничениями), в 21 через эмуляцию запросов.
Честно, не понимаю, что вам именно непонятно.

41

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

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

42

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

На каком сайте?
У вас русский - родной язык?
Может проще на английском вам объяснить?

43

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Русский - родной. Имелось в виду, что скрипт выводит тело гиста, находящегося на сайте gist.github.com.

44

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Так скрипт вносит изменения.
Вы его запускали?
Чтобы не выводить тело гиста, не выполняйте код идущий после

; читаем измененный гист

45

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Понажимайте f11.

login := "login"
password := "pass"
gist := "gist id"
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
return

f11::
NewText := A_TickCount
goto edit
return

login:
HTTP.Open("GET", "https://github.com/login", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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.send()
HTTP.WaitForResponse()
RegexMatch(HTTP.ResponseText, "s)name=""authenticity_token"" value=""(.+?)"".+?name=""timestamp"" value=""(.+?)"".+?name=""timestamp_secret"" value=""(.+?)""", match)
Post := "commit=Sign+in&authenticity_token=" match1 "&login=" login "&password=" password "&webauthn-support=supported&webauthn-iuvpaa-support=unsupported&return_to=https%3A%2F%2Fgithub.com%2Flogin&allow_signup=&client_id=&integration=&required_field_073c=&timestamp=" match2 "&timestamp_secret=" match3

HTTP.Open("POST", "https://github.com/session", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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", "application/x-www-form-urlencoded")
HTTP.send(Post)
HTTP.WaitForResponse()

edit:
HTTP.Open("GET", "https://gist.github.com/" login "/" gist "/edit", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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.send()
HTTP.WaitForResponse()
token := RegexReplace(HTTP.ResponseText, "s)^.*id=""edit_gist_.+?name=""authenticity_token"" value=""(.+?)"".*$", "$1", OutputVarCount)
if (OutputVarCount = 0)
   goto login
gistLink := RegexReplace(HTTP.ResponseText, "s)^.*gist\[contents]\[]\[oid]""\R\s+?value=""(.+?)"".*$", "$1")
filename := RegexReplace(HTTP.ResponseText, "s)^.*class=""js-new-filename-field"" value=""(.+?)"".*$", "$1")
Post := "_method=put&authenticity_token=" token "&gist%5Bdescription%5D=&gist%5Bcontents%5D%5B%5D%5Boid%5D=" gistLink "&gist%5Bcontents%5D%5B%5D%5Bname%5D=" filename "&new_filename=" filename "&content_changed=true&gist%5Bcontents%5D%5B%5D%5Bvalue%5D=" UriEncode(NewText)

HTTP.Open("POST", "https://gist.github.com/" login "/" gist, true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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", "application/x-www-form-urlencoded")
HTTP.send(Post)
HTTP.WaitForResponse()
return


UriEncode(Uri)
{
   VarSetCapacity(Var, StrPut(Uri, "UTF-8"), 0)
   StrPut(Uri, &Var, "UTF-8")
   f := A_FormatInteger
   SetFormat, IntegerFast, H
   While Code := NumGet(Var, A_Index - 1, "UChar")
      If (Code >= 0x30 && Code <= 0x39 ; 0-9
         || Code >= 0x41 && Code <= 0x5A ; A-Z
         || Code >= 0x61 && Code <= 0x7A) ; a-z
         Res .= Chr(Code)
      Else
         Res .= "%" . SubStr(Code + 0x100, -1)
   SetFormat, IntegerFast, %f%
   Return, Res
}

46 (изменено: john_dease, 2023-02-12 00:06:01)

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

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

47

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Можно так попробовать:

login := "login"
password := "pass"
gist := "gist id"
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
return

f11::
NewText := A_TickCount
goto edit
return

login:
HTTP.Open("GET", "https://github.com/login", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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.send()
HTTP.WaitForResponse()
RegexMatch(HTTP.ResponseText, "s)name=""authenticity_token"" value=""(.+?)"".+?name=""timestamp"" value=""(.+?)"".+?name=""timestamp_secret"" value=""(.+?)""", match)
Post := "commit=Sign+in&authenticity_token=" match1 "&login=" login "&password=" password "&webauthn-support=supported&webauthn-iuvpaa-support=unsupported&return_to=https%3A%2F%2Fgithub.com%2Flogin&allow_signup=&client_id=&integration=&required_field_073c=&timestamp=" match2 "&timestamp_secret=" match3

HTTP.Open("POST", "https://github.com/session", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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", "application/x-www-form-urlencoded")
HTTP.send(Post)
HTTP.WaitForResponse()

edit:
HTTP.Open("GET", "https://gist.github.com/" login "/" gist "/edit", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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.send()
HTTP.WaitForResponse()
token := RegexReplace(HTTP.ResponseText, "s)^.*id=""edit_gist_.+?name=""authenticity_token"" value=""(.+?)"".*$", "$1", OutputVarCount)
if (OutputVarCount = 0)
   goto login
gistLink := RegexReplace(HTTP.ResponseText, "s)^.*gist\[contents]\[]\[oid]""\R\s+?value=""(.+?)"".*$", "$1")
filename := RegexReplace(HTTP.ResponseText, "s)^.*class=""js-new-filename-field"" value=""(.+?)"".*$", "$1")
OldText := RegexReplace(HTTP.ResponseText, "s)^.*data-filename=""" filename """.+?>\R(.*?)</textarea>.*$", "$1")
OldText := StrReplace(OldText, "`n", "<br>")
OldText := StrReplace(OldText, " ", "&nbsp;") "&nbsp;"
document := ComObjCreate("HTMLFile")
document.write(OldText)
OldText := substr(document.body.outertext, 1, -1)
Post := "_method=put&authenticity_token=" token "&gist%5Bdescription%5D=&gist%5Bcontents%5D%5B%5D%5Boid%5D=" gistLink "&gist%5Bcontents%5D%5B%5D%5Bname%5D=" filename "&new_filename=" filename "&content_changed=true&gist%5Bcontents%5D%5B%5D%5Bvalue%5D=" UriEncode(OldText) UriEncode(NewText)

HTTP.Open("POST", "https://gist.github.com/" login "/" gist, true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")
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", "application/x-www-form-urlencoded")
HTTP.send(Post)
HTTP.WaitForResponse()
return


UriEncode(Uri)
{
   VarSetCapacity(Var, StrPut(Uri, "UTF-8"), 0)
   StrPut(Uri, &Var, "UTF-8")
   f := A_FormatInteger
   SetFormat, IntegerFast, H
   While Code := NumGet(Var, A_Index - 1, "UChar")
      If (Code >= 0x30 && Code <= 0x39 ; 0-9
         || Code >= 0x41 && Code <= 0x5A ; A-Z
         || Code >= 0x61 && Code <= 0x7A) ; a-z
         Res .= Chr(Code)
      Else
         Res .= "%" . SubStr(Code + 0x100, -1)
   SetFormat, IntegerFast, %f%
   Return, Res
}

48

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Правильно понимаю, что на гитхабе что-то поменяли и поэтому последний скрипт не работает?

49

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

У меня всё работает.
Только иногда редиректов дефалтных видно не хватает.
Можно добавить после создания winhttp объекта:

HTTP.Option(14) := 50   ; WinHttpRequestOption_MaxAutomaticRedirects

50

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

А у меня никак. Оправлял в секретный гист, в несекретный, менял аккаунты, в логин добавлял "@yandex.ru" и без - как в прошлый раз новые записи не создаются.

51

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Видимо, скрипт не логинится. Если сразу после метки "login", вставить "msgbox login" - то скрипт после нажатия F11 снова и снова переходит к метке логина.

52

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

В логин надо вписывать ваш username, а не имейл или часть имейла.

53

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Имелось в виду, что добавлял и просто логин, и в полном виде - с данными имейла.

54 (изменено: Malcev, 2023-04-26 14:25:40)

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Значит что-то делаете не так.
Я не писал этот скрипт для использования конечным юзером, то есть:
1) Проверяйте, после выполнения логина, вы залогинены или нет.
2) Возможно данный гист нельзя редактировать и поэтому вас перенаправляет в логин.

55

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Открыл страницу после логина - там просят подтвердить код из имейла "Device Verification Code".

56

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Ну так подтвердите.

57

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

А как его подтвердить через скрипт? Если подтвердить в браузере - то в браузере я войду, но не через скрипт.

58

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Точнее: в браузере надо будет подтвердить уже другой код - не тот, что пришел в скрипте.

59

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Не знаю.
У меня такого не приходит.
Смотрите, что отправляется в броузере при запросе о подтверждении и тоже самое сделайте в скрипте.

60

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Добавил после логина - тоже не помогает:

RTxt := HTTP.ResponseText
if InStr(RTxt, "Device verification") {
   InputBox, verification, Github device verification, Введите код подтверждения`, пришедший на почту,,380,150
   If ErrorLevel
      Exit
   Else {

   loop
   {
      HTTP.Open("POST", "https://github.com/sessions/verified-device", true)
      HTTP.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")
      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/json")
      HTTP.SetRequestHeader("path", "/sessions/verified-device")
      HTTP.SetRequestHeader("scheme", "https")
      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("accept-encoding", "gzip, deflate, br")
      HTTP.SetRequestHeader("accept-language", "ru-RU,ru;q=0.9")
      HTTP.SetRequestHeader("cache-control", "max-age=0")
      HTTP.SetRequestHeader("origin", "https://github.com")
      HTTP.SetRequestHeader("referer", "https://github.com/sessions/verified-device")
      HTTP.SetRequestHeader("sec-ch-ua", """ Not A;Brand"";v=""99"", ""Chromium"";v=""102""")
      HTTP.SetRequestHeader("sec-ch-ua-mobile", "?0")
      HTTP.SetRequestHeader("sec-ch-ua-platform", """Windows""")
      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.Send("authenticity_token=" . match1 . "&otp=" . verification)
      try {
         HTTP.WaitForResponse()
         ;if (HTTP.ResponseText != "")
         break
      }
      catch {
         sleep 5000
      }
   }
   }
}

61

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Зачем вы отправляете всю эту кучу хедеров?

62

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Чтоб наверняка - неизвестно же, какого может недоставать.

63

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

Этого делать не нужно.
Точно также, как не нужно использовать данный код в продакшене.
Если вам тяжело разбираться в гет-пост запросах, переходите на пайтон - там куча готовых библиотек.
Или читайте алгоритм и переносите на ахк.
Например:
https://github.com/mxrch/GitFive/blob/1 … ts.py#L187

64

Re: AHK: Как быстро и незаметно обмениваться информацией в локальной сети?

С кодом по ссылке проще получается: http://forum.script-coding.com/viewtopi … 31#p156731.