1

Тема: AHK: Создание куки-файла для Рутрекера

Приведенный код создаёт такой файл через WGET, а как обойтись запросами AHK?

Wget = %A_ScriptDir%\wget.exe
Cookies = %A_ScriptDir%\cookies.txt

FileGetTime FileDate, "%Cookies%"
FormatTime FileDate, %FileDate%, yyyyMMdd
FormatTime CurrDate,, yyyyMMdd
IfNotEqual FileDate, %CurrDate%, FileDelete %Cookies%
IfNotExist %Cookies%, RunWait, "%Wget%" --keep-session-cookies --save-cookies "%Cookies%" --post-data "login_username=***НИК***&login_password=***ПАРОЛЬ***&login=%C2%F5%EE%E4" --no-check-certificate -P "%A_Temp%" "https://rutracker.org/forum/login.php"

2 (изменено: Malcev, 2018-06-27 03:05:55)

Re: AHK: Создание куки-файла для Рутрекера

В HTTP.GetAllResponseHeaders они все прописаны.

3 (изменено: DD, 2018-06-27 02:28:42)

Re: AHK: Создание куки-файла для Рутрекера

На тему кук в пост-запросах, в своём как-то скачанном варианте сайта нашёл разве что три Ваших кода, которые поиск по сайту почему-то не выдавал.

В частности, по первому интересует, может ли он сохранить куки в файл?

4 (изменено: Malcev, 2018-06-27 03:08:44)

Re: AHK: Создание куки-файла для Рутрекера

Я давно той функцией не пользуюсь.
Сейчас бы я прочто парсил GetAllResponseHeaders на наличие куки.

WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
WebRequest.Open("GET", "http://forum.script-coding.com/")
WebRequest.Send()
msgbox % WebRequest.GetAllResponseHeaders

https://developer.mozilla.org/en-US/doc … Set-Cookie

+ DD

5 (изменено: DD, 2018-06-27 04:28:10)

Re: AHK: Создание куки-файла для Рутрекера

Так понимаю, у Рутрекера GetAllResponseHeaders — пустой? Или сначала надо залогиниться?

url := "https://rutracker.org/forum/login.php"
proxy := "195.201.133.248:3130"
HTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HTTP.Open("GET", url)
HTTP.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()
msgbox % WebRequest.GetAllResponseHeaders
HTTP.WaitForResponse()
ResponseText := HTTP.ResponseText
MsgBox % ResponseText
fileappend % ResponseText, %a_desktop%\login.html, UTF-8

6

Re: AHK: Создание куки-файла для Рутрекера

Зайдите через броузер, посмотрите, что вам приходит в ответ и сравните со своим.

7

Re: AHK: Создание куки-файла для Рутрекера

Имелось в виду, что код из 4-го сообщения сходу выводит куки-подобный текст, тогда как тот же код, запускающий Рутрекер (из 5-го сообщения), ничего не выводит.

8

Re: AHK: Создание куки-файла для Рутрекера

DD пишет:

WebRequest.GetAllResponseHeaders

+ DD

9 (изменено: MandarinKa02, 2018-06-27 15:15:46)

Re: AHK: Создание куки-файла для Рутрекера

DD пишет:

Имелось в виду, что код из 4-го сообщения сходу выводит куки-подобный текст, тогда как тот же код, запускающий Рутрекер (из 5-го сообщения), ничего не выводит.

Может потому, что в 5 посте com-объект присваивается переменной HTTP, а в 4 - WebRequest.

msgbox % HTTP.GetAllResponseHeaders
+ DD

10 (изменено: DD, 2018-06-27 21:24:23)

Re: AHK: Создание куки-файла для Рутрекера

Уже в третий раз забываю править эти объекты с богатыми вариантами имён)).

Malcev пишет:

В HTTP.GetAllResponseHeaders они все прописаны.

Теперь что-то выводит, но как это дальше использовать для логина и сохранения кук?

url := "https://rutracker.org/forum/login.php"
proxy := "195.201.133.248:3130"
HTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HTTP.Open("GET", url)
HTTP.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()
msgbox % HTTP.GetAllResponseHeaders
;HTTP.WaitForResponse()
;ResponseText := HTTP.ResponseText
;MsgBox % ResponseText
;fileappend % ResponseText, %a_desktop%\login.html, UTF-8

11 (изменено: MandarinKa02, 2018-06-27 21:44:07)

Re: AHK: Создание куки-файла для Рутрекера

Вы подключаетесь к рутрекеру через прокси. Скорее всего, что этот прокси платный т.к. если попробовать без него подключится, то в ResponseText будет HTML-страница сайта и header будет совсем другой.

Обратите внимание на подчеркнутую строку.

+ С_прокси

https://i.imgur.com/SBlls3r.png

+ Без_прокси

https://i.imgur.com/u1mAcL0.png

12 (изменено: DD, 2018-06-27 22:48:59)

Re: AHK: Создание куки-файла для Рутрекера

Вроде, прокси бесплатные, отсюда: https://proxy-list.org/russian/index.php.

13

Re: AHK: Создание куки-файла для Рутрекера

Этот прокси нерабочий.
А зачем вам вообще куки сохранять?
И пароль через прокси вы не боитесь отправлять?

14 (изменено: DD, 2018-06-28 00:08:31)

Re: AHK: Создание куки-файла для Рутрекера

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

15

Re: AHK: Создание куки-файла для Рутрекера

Парсите ответ сервера, куки он выдаёт построчно, начиная с "Set-Cookie: ".
Эти куки вы объединяете с помощью "; " и потом посылаете так:

cookies := "a=b; b=c; c=d"
HTTP.SetRequestHeader("Cookie", cookies)

16 (изменено: DD, 2018-06-28 00:37:34)

Re: AHK: Создание куки-файла для Рутрекера

Спасибо! Но прежде, как в AHK-запросы ввернуть это дело:

IfNotExist %Cookies%, RunWait, "%Wget%" --keep-session-cookies --save-cookies "%Cookies%" --post-data "login_username=***НИК***&login_password=***ПАРОЛЬ***&login=%C2%F5%EE%E4" --no-check-certificate -P "%A_Temp%" "https://rutracker.org/forum/login.php"

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

17

Re: AHK: Создание куки-файла для Рутрекера

Не знаю. Я там логиниться через скрипт не пробовал.