2016-11-16 59 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多次,每个实例都将拥有自己的cookie,如果要单独保存这些cookies,您可以使用这样的bash脚本:

#!/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:

Cookies是存储在Mozilla的轮廓SQLite数据库。如果你想拥有持久性cookies,你不能像PhantomJS那样指定一个文件,但你应该创建一个永久性配置文件。见profiles

阅读也:
https://docs.slimerjs.org/current/api/cookie.html#cookie
https://docs.slimerjs.org/current/api/phantom.html#phantom-cookies

+1

感谢。我的问题是每个casperjs实例在访问相同的域时如何分别管理cookie。我不认为指定cookie文件的位置将有所帮助。 – Yijin

相关问题