ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Cookie (https://forum.antichat.xyz/showthread.php?t=1356406)

back.DEV 01.06.2020 13:53

На сайте сервера arizona-rp.com есть вот такая тема
Цитата:

Сообщение от Спойлер

EOajpJm.pngback.DEV · 1 Июн 2020 в 12:53' data-fancybox="lb-post-505947" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fi.imgur.com%2FEOajpJ m.png&hash=370d8f46c1e04c3f4019e45d937e4953" style="cursor: pointer;" title="EOajpJm.png">
https://i.imgur.com/EOajpJm.png




Так вот я делаю запрос к сайту для получения вот этого куки


HTML:





Код:


document.cookie="R3ACTLB=eebdbfd51ddb46a72b4326036ed39945 ; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/";setTimeout("location.href='https://arizona-rp.com:443/mon/fraction/8/1';",5000);



Получаю я его вот таким образом:

JavaScript:





Код:

let
cookie
;
// хранение куки
getOnline
(
)
async
function
getOnline
(
)
{
await
needle
.
get
(
'https://arizona-rp.com'
,
function
(
err, response
)
{
try
{
cookie
=
response
.
body
.
split
(
"R3ACTLB="
)
[
1
]
.
split
(
" ;"
)
[
0
]
;
console
.
log
(
cookie
)
;
}
catch
(
err
)
{
console
.
log
(
err
)
;
}
}
)
;
/* потом я делаю запрос опять к этому сайту и уже с использованием этого куки для получения инфы с сайта*/
// Делаю я это таким образом:
await
needle
.
get
(
'https://arizona-rp.com/mon/fraction/8/1'
,
function
(
err, response
)
{
try
{
console
.
log
(
response
.
body
)
;
}
catch
(
err
)
{
console
.
log
(
err
)
;
}
}
)
;
}
)
;



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

Юзаю библиотеку needle.

Azller Lollison 01.06.2020 14:00

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

back.DEV 01.06.2020 14:02

Цитата:

Сообщение от Azller Lollison

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

я в прошлой библиотеке requestify делал именно так как сейчас и передавал как-то через header и всё работало, но она тупит, эта библиотека более стабильно работает, вот и думаю как это реализовать с этой библиотекой

В прошлой библиотеке вот так передавал:

JavaScript:





Код:

requestify
.
get
(
'https://arizona-rp.com'
,
{
cookies
:
{
R3ACTLB
:
cookie
}
}
)
.
then
(
function
(
response
)
)
// и т.д и т.п



В этой я так понял по другому все работает.

Azller Lollison 01.06.2020 14:04

Цитата:

Сообщение от Maks_Fletcher

я в прошлой библиотеке requestify делал именно так как сейчас и передавал как-то через header и всё работало, но она тупит, эта библиотека более стабильно работает, вот и думаю как это реализовать с этой библиотекой

передай в массиве вторым аргументом ее

JavaScript:





Код:

var
options
=
{
compressed
:
true
,
follow
:
10
,
accept
:
'application/vnd.github.full+json'
}
needle
.
get
(
'api.github.com/users/tomas'
,
options
,
function
(
err, resp, body
)
{
// body will contain a JSON.parse(d) object
// if parsing fails, you'll simply get the original body
}
)
;



пример с гита либы https://github.com/tomas/needle#cust...header-deflate

back.DEV 01.06.2020 14:19

Если я правильно понял то всеравно возвращает ту же страницу первую.

JavaScript:





Код:

getOnline
(
)
async
function
getOnline
(
)
{
await
needle
.
get
(
'https://arizona-rp.com'
,
function
(
err, response
)
{
try
{
cookie
=
response
.
body
.
split
(
"R3ACTLB="
)
[
1
]
.
split
(
" ;"
)
[
0
]
;
console
.
log
(
cookie
)
;
}
catch
(
err
)
{
console
.
log
(
err
)
;
}
}
)
;
const
options
=
{
compressed
:
true
,
follow
:
10
,
accept
:
cookie
}
await
needle
.
get
(
'https://arizona-rp.com/mon/fraction/8/1'
,
options
,
function
(
err, response
)
{
try
{
console
.
log
(
response
.
body
)
;
}
catch
(
err
)
{
console
.
log
(
err
)
;
}
}
)
;
}



Вывело мне с первой функции в консольку вот это куки которое оно взяло со страницы и во второй функции вывело уже всю эту страницу которая на скрине выше была.

Azller Lollison 01.06.2020 14:21

cookie: cookie а не аццепт, ты не шаришь в хттп заголовках?

GitHub - tomas/needle: Nimble, streamable HTTP client for Node.js. With proxy, iconv, cookie, deflate & multipart support.

Nimble, streamable HTTP client for Node.js. With proxy, iconv, cookie, deflate & multipart support. - tomas/needle

github.com


вот тут пишется короче

back.DEV 01.06.2020 14:34

решил проблему, немного посмотрел

Решение:

const options = {

compressed: true,

follow: 10,

cookies: {R3ACTLB: cookie}

}

Livarka 02.06.2020 07:26

Цитата:

Сообщение от Maks_Fletcher

решил проблему, немного посмотрел
Решение:
const options = {
compressed: true,
follow: 10,
cookies: {R3ACTLB: cookie}
}

GitHub - duy13/vDDoS-Protection: Welcome to vDDoS, a HTTP(S) DDoS Protection Reverse Proxy. Thank you for using!

Welcome to vDDoS, a HTTP(S) DDoS Protection Reverse Proxy. Thank you for using! - duy13/vDDoS-Protection

github.com


вот тебе сурс защиты самого стабильного хостинга

Philipp Zelinski 21.10.2020 18:58

Предлагаю использовать axios:

Получение необходимого куки:





Код:

const
{
get
}
=
require
(
'axios'
)
;
async
function
getCookie
(
url
)
{
// Запрашиваем HTML у сайта
const
res
=
await
get
(
url
)
;
const
isSuccess
=
res
&&
res
.
status
===
200
&&
res
.
data
;
if
(
!
isSuccess
)
throw
new
Error
(
'Неудачный запрос'
)
;
// Проверяем наличие необходимого куки в странице
if
(
!
res
.
data
.
includes
(
'R3ACTLB'
)
)
return
null
;
const
foundCookie
=
res
.
data
.
split
(
'R3ACTLB='
)
[
1
]
.
split
(
' ;'
)
[
0
]
;
if
(
!
foundCookie
)
throw
new
Error
(
'Ошибка при поиске куки на странице'
)
;
return
foundCookie
;
}



Для получения онлайна можно использовать функцию из моей библиотеки:

Получение онлайна:





Код:

const
{
getFractionPlayers
}
=
require
(
'@nieopierzony/core'
)
;
// Получение списка игроков во фракции
(
async
(
)
=>
{
const
serverID
=
8
;
const
fractionID
=
1
;
// Использую URL форума, т.к. на основном сайте эту систему отключили
const
players
=
await
getFractionPlayers
(
serverID
,
fractionID
,
{
headers
:
{
Cookie
:
`R3ACTLB=${await getCookie('http://forum.arizona-rp.com')}`
,
}
,
}
)
;
console
.
log
(
players
)
;
// => [
//      { id: '1', nickname: 'Skezy_Sparta', rank: 1, online: false },
//      { id: '2', nickname: 'Langris_Lout', rank: 3, online: true },
//      ... 24 more items
//    ];
}
)
(
)
;



На основном сайте аризоны уже убрали ту систему и для входа на сайт, куки не требуется, но все же.


Время: 17:25