Передайте файл cook ie в запрос curl nodejs - PullRequest
1 голос
/ 31 января 2020

Я использую расширение cookies.txt chrome, чтобы получить cookies.txt после входа в Google. Формат файла cook ie - netscape cook ie. Теперь я хочу передать этот файл cook ie в http-запрос по nodejs.

Командная строка, которую я использовал:

curl -L -b cookie.txt https://myaccount.google.com/

Но я не смог найти никаких документов, которые бы говорили мне о как передать файл cook ie в функцию curl из nodejs. Как преобразовать приведенную выше командную строку в nodejs?

Обновление: формат cook ie .txt, например:

# HTTP Cookie File for mozilla.org by Genuinous @genuinous.
# To download cookies for this tab click here, or download all cookies.
# Usage Examples:
#   1) wget -x --load-cookies cookies.txt "https://developer.mozilla.org/vi/docs/Web/JavaScript/Reference/Functions/Arrow_functions"
#   2) curl --cookie cookies.txt "https://developer.mozilla.org/vi/docs/Web/JavaScript/Reference/Functions/Arrow_functions"
#   3) aria2c --load-cookies cookies.txt "https://developer.mozilla.org/vi/docs/Web/JavaScript/Reference/Functions/Arrow_functions"
#
.mozilla.org    TRUE    /   FALSE   1643553591  _ga GA1.2.176633766.1564724252
.developer.mozilla.org  TRUE    /   TRUE    1583073592  dwf_sg_task_completion  False
.mozilla.org    TRUE    /   FALSE   1580567991  _gid    GA1.2.1169610322.1580463999
developer.mozilla.org   FALSE   /   FALSE   1580483392  lux_uid 158048125271715522
.mozilla.org    TRUE    /   FALSE   1580481652  _gat    1

Nodejs код:

var http = require('http');

var options = {
    hostname: 'www.myaccount.google.com',
    path: '/',
    headers: {
        'User-Agent': 'whatever',
        'Referer': 'https://google.com/',
        'Cookie': ????
    }
};

http.get(options, callback);

Ответы [ 2 ]

1 голос
/ 31 января 2020

Есть упаковка npm cookiefile . Он может прочитать файл-файл в формате netscape и сгенерировать соответствующий заголовок.

Он отправит файлы cookie со всеми данными об истечении срока действия, пути и области действия из файла-файла.

Примерно так (не отлажено):

var http = require('http');
const cookiefile = require('cookiefile')

const cookiemap = new cookiefile.CookieMap('path/to/cookie.txt')
const cookies = cookiemap.toRequestHeader().replace ('Cookie: ','')

var options = {
    hostname: 'www.myaccount.google.com',
    path: '/',
    headers: {
        'User-Agent': 'whatever',
        'Referer': 'https://google.com/',
        'Cookies': cookies
    }
};

http.get(options, callback);
1 голос
/ 31 января 2020

Как вы уже знаете, вам просто нужно установить заголовок Cookie на основе имени и значений, которые соответствуют целевому имени хоста. Вот пример из вашего файла cook ie для домена developer.mozilla.org:

var http = require('http');

var options = {
    hostname: 'developer.mozilla.org',
    path: '/',
    headers: {
        'User-Agent': 'whatever',
        'Referer': 'https://google.com/',
        'Cookie': 'dwf_sg_task_completion=False; lux_uid=158048125271715522;'
    }
};

http.get(options, callback);
...