 |

01.06.2020, 13:53
|
|
Познающий
Регистрация: 16.07.2018
Сообщений: 71
С нами:
4120021
Репутация:
63
|
|
На сайте сервера 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">

Так вот я делаю запрос к сайту для получения вот этого куки
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.
|
|
|

01.06.2020, 14:00
|
|
Познавший АНТИЧАТ
Регистрация: 20.07.2017
Сообщений: 1,292
С нами:
4639746
Репутация:
183
|
|
я конечно нихуя не жсер но разве ты не должен в заголовках передать куку а не просто спарсить и засейвить ее в переменную?
|
|
|

01.06.2020, 14:02
|
|
Познающий
Регистрация: 16.07.2018
Сообщений: 71
С нами:
4120021
Репутация:
63
|
|
Сообщение от Azller Lollison
я конечно нихуя не жсер но разве ты не должен в заголовках передать куку а не просто спарсить и засейвить ее в переменную?
я в прошлой библиотеке requestify делал именно так как сейчас и передавал как-то через header и всё работало, но она тупит, эта библиотека более стабильно работает, вот и думаю как это реализовать с этой библиотекой
В прошлой библиотеке вот так передавал:
JavaScript :
Код:
requestify
.
get
(
'https://arizona-rp.com'
,
{
cookies
:
{
R3ACTLB
:
cookie
}
}
)
.
then
(
function
(
response
)
)
// и т.д и т.п
В этой я так понял по другому все работает.
|
|
|

01.06.2020, 14:04
|
|
Познавший АНТИЧАТ
Регистрация: 20.07.2017
Сообщений: 1,292
С нами:
4639746
Репутация:
183
|
|
Сообщение от 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
|
|
|

01.06.2020, 14:19
|
|
Познающий
Регистрация: 16.07.2018
Сообщений: 71
С нами:
4120021
Репутация:
63
|
|
Если я правильно понял то всеравно возвращает ту же страницу первую.
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
)
;
}
}
)
;
}
Вывело мне с первой функции в консольку вот это куки которое оно взяло со страницы и во второй функции вывело уже всю эту страницу которая на скрине выше была.
|
|
|

01.06.2020, 14:21
|
|
Познавший АНТИЧАТ
Регистрация: 20.07.2017
Сообщений: 1,292
С нами:
4639746
Репутация:
183
|
|
|
|
|

01.06.2020, 14:34
|
|
Познающий
Регистрация: 16.07.2018
Сообщений: 71
С нами:
4120021
Репутация:
63
|
|
решил проблему, немного посмотрел
Решение:
const options = {
compressed: true,
follow: 10,
cookies: {R3ACTLB: cookie}
}
|
|
|

02.06.2020, 07:26
|
|
Участник форума
Регистрация: 27.08.2017
Сообщений: 143
С нами:
4584912
Репутация:
83
|
|
|
|
|

21.10.2020, 18:58
|
|
Новичок
Регистрация: 20.10.2020
Сообщений: 5
С нами:
2929979
Репутация:
3
|
|
Предлагаю использовать 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
// ];
}
)
(
)
;
На основном сайте аризоны уже убрали ту систему и для входа на сайт, куки не требуется, но все же.
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|