사용자의 요청에 따라 Mechanize를 사용하여 암호로 보호 된 웹 사이트를 긁습니다. 사이트에 로그인하고 후속 Mechanize 요청에 의해 다시 사용되는 데이터베이스에 쿠키를 저장하는 Rake 작업을 실행하여 로그인 및 검색 기능을 분리하려고합니다.Mechanize cookie_jar 세션 토큰을 저장하지 않음
내 문제는 cookie_jar.save
메서드가 세션 쿠키/토큰을 쿠키 파일에 저장하지 않는다는 것입니다. 다음은이 보여주는 간단한 예제 :
require 'mechanize'
# Setup Mechanize agents
agent1 = Mechanize.new
agent2 = Mechanize.new
# Fetch page and save cookies to local file
agent1.get ('http://www.my-secure-website.com')
agent1.post('http://www.my-secure-website.com/login', {
'user[login]' => 'my_login',
'user[password]' => 'my_password',
'submit' => 'Login'
})
# Verify and save cookies
agent1.cookie_jar.save_as 'cookies'
p agent1.cookie_jar
# #<Mechanize::CookieJar:0x8cf60b8 @jar={"www.my-secure-website.com"=>{"/"=>{"JSESSIONID"=>JSESSIONID=1NqLRc4dm0Qp5465N82Zwz4N0yXxy5jP1pXpyKp9jG8ssX2nMp5q!-334818122}, "/login/"=>{"Account"=>Account=my_account_number}}, "evr.my-secure-website.com"=>{"/APBDBQ"=>{"JSESSIONID"=>JSESSIONID=A74D230DEAFF50098557FBE76DD2E0C5}}}
########################################################
# Now let's load cookies into the second Mechanize agent
# Version 1 - This works only partially. Session cookies are missing:
agent2.cookie_jar.load 'cookies'
p agent2.cookies
# [
# [0] Account=my_account_number
# ]
p agent2.cookie_jar
# #<Mechanize::CookieJar:0x914c658 @jar={"www.my-secure-website.com"=>{"/"=>{}, "/login/"=>{"Account"=>Account=my_account_number}}, "evr.my-secure-website.com"=>{"/APBDBQ"=>{}}}>
# Version 2 - This works, but cannot be saved into file/db!
agent2.cookie_jar = agent1.cookie_jar
p agent2.cookies
# [
# [0] JSESSIONID=1NqLRc4dm0Qp5465N82Zwz4N0yXxy5jP1pXpyKp9jG8ssX2nMp5q!-334818122,
# [1] Account=my_account_number,
# [2] JSESSIONID=A74D230DEAFF50098557FBE76DD2E0C5
# ]
p agent2.cookie_jar
# #<Mechanize::CookieJar:0x8cf60b8 @jar={"www.my-secure-website.com"=>{"/"=>{"JSESSIONID"=>JSESSIONID=1NqLRc4dm0Qp5465N82Zwz4N0yXxy5jP1pXpyKp9jG8ssX2nMp5q!-334818122}, "/login/"=>{"Account"=>Account=my_account_number}}, "evr.my-secure-website.com"=>{"/APBDBQ"=>{"JSESSIONID"=>JSESSIONID=A74D230DEAFF50098557FBE76DD2E0C5}}}>
는 그리고 이것은처럼 내 저장된 쿠키 파일이 모습입니다 : 당신은 콘솔 출력의 세션 토큰 (JSESSIONID
)를 볼 수 있습니다
---
www.my-secure-website.com:
/: {}
/login/:
Account: !ruby/object:Mechanize::Cookie
version: 0
port:
discard:
comment_url:
expires: Thu, 22 May 2014 07:48:46 GMT
max_age:
comment:
secure: true
path: /login/
domain: www.my-secure-website.com
accessed_at: 2013-05-22 00:48:47.227628764 -07:00
created_at: 2013-05-22 00:48:47.227628764 -07:00
name: Account
value: S4633
for_domain: false
domain_name: !ruby/object:DomainName
ipaddr:
hostname: www.my-secure-website.com
uri_host: www.my-secure-website.com
tld: com
canonical_tld_p: true
domain: my-secure-website.com
session: false
evr.my-secure-website.com:
/APBDBQ: {}
하지만 실종 로컬 쿠키 파일에서. 내 질문은, 어떻게 내가 Mechanize.cookie_jar.save_as
도 세션 데이터를 저장합니까?
그럼 뭐가 문제입니까? – pguardiario
질문을 명확하게하기 위해 업데이트되었습니다. –
세션 쿠키가 저장되지 않아야합니다. 그것을 바꾸려면 Mechanize.cookie_jar를 패치하고 싶습니까? – pguardiario