2016-11-16 2 views
1

Я немного смущен тем, как работают несколько экземпляров casperjs одновременно.У нескольких экземпляров casperjs общие файлы cookie

Мое понимание заключается в том, что у нас есть «casperjs» c.1.js, c.2.js, ..., cxjs (они имеют одинаковый код), тогда он будет создавать несколько процессов и должен управлять ресурсами по отдельности, как отдельные файлы cookie. Если у нас просто есть файл «casperjs» c.x.js несколько раз, он будет использовать один и тот же файл cookie.

Мое понимание правильно?

Спасибо за любой ввод.

ответ

1

Каждые phantomjs экземпляра имеет свои собственный object phantom.cookies, при запуске casperjs c.x.js несколько раз, каждый экземпляр будет иметь свой собственный куки, если вы хотите хранить эти кук отдельно, вы можете использовать такой Баш скрипт:

#!/bin/bash 
# run it, e.g.: ./test.sh 10 snap.js // 10 times snap.js 
    export PHANTOMJS_EXECUTABLE=/tmp/casperjs/phantomjs  # ln -sf /tmp/casperjs/phantomjs /usr/local/bin 
# export SLIMERJS_EXECUTABLE="/root/slimerjs-0.9.5/slimerjs" # ln -sf /root/slimerjs-0.9.5/slimerjs /usr/local/bin 
num=0 
while [ "$num" != "$1" ] 
do 
let "num++" 
echo instance_"$num" >>/root/t 
/tmp/casperjs/bin/casperjs --cookies-file=/root/casperjs/cookies_"$num".txt /root/casperjs/"$2" >>/root/t & 
echo "$num $1 $2" 
done 
exit 0 

Таким образом, у вас будет несколько работников, которые будут использовать cookie отдельно.

SlimerJS:

Куки хранятся в базе данных SQLite в профиле Mozilla. Если вы хотите иметь постоянные файлы cookie, вы не можете указать файл, например, для PhantomJS, но вы должны создать постоянный профиль. См. profiles.

Читайте также:
https://docs.slimerjs.org/current/api/cookie.html#cookie
https://docs.slimerjs.org/current/api/phantom.html#phantom-cookies

+1

спасибо. мой вопрос в том, как каждый экземпляр casperjs может управлять куки-файлами отдельно, когда они обращаются к одному домену. Я не думаю, что указать расположение файла cookie поможет. – Yijin