首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:机械化无法将Cookie发送到第二个URL

Python:机械化无法将Cookie发送到第二个URL
EN

Stack Overflow用户
提问于 2011-09-09 07:53:25
回答 1查看 810关注 0票数 2

我遇到了严重的问题,试图让机械化保留由第一个请求的URL设置的cookie,当请求第二个URL时。为了测试是否发送了任何内容,我在我的服务器(cookies.php)上放置了以下文件:

代码语言:javascript
复制
<?php
echo "cookies:::";
print_r($_COOKIE);
?>

下面是python文件,意思是实现我的目标。我希望第一个站点设置的cookie也可以在PHP文件中输出(也可以在第二个请求之前设置):

代码语言:javascript
复制
from BeautifulSoup import BeautifulSoup, BeautifulStoneSoup
import mechanize

from pprint import *

#

class NullCookieProcessor(mechanize.HTTPCookieProcessor):
    def http_request(self, request): return request
    def http_response(self, request, response): return response

opener = mechanize.build_opener(NullCookieProcessor)

request = mechanize.Request('http://www.google.com')
response = mechanize.urlopen(request)
cj = mechanize.CookieJar()
cj.extract_cookies(response, request)

pprint(cj)

request2 = mechanize.Request('http://[domain2].com/cookies.php')
cj.add_cookie_header(request2)
response2 = mechanize.urlopen(request2)

print response2.geturl()
print response2.info()  # headers
print response2.read()  # body (readline and readlines work too)

以下是输出:

代码语言:javascript
复制
<mechanize._clientcookie.CookieJar[Cookie(version=0, name='NID', value='50=rkj1MMbufL7KRMj00TMF4rI4x7VNYgzWk5P97V05gBAMVOrYuSbb6-hpXVC3y_eD999uECgnBn7YqZ-ZGB1kmWhc_wQWV9nKlPER4_3BWEVSGU632vXEhgYROAz3QrP5', port=None, port_specified=False, domain='.google.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=1331337059, discard=False, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False), Cookie(version=0, name='PREF', value='ID=20342e7c6a6b8f8b:FF=0:TM=1315525859:LM=1315525859:S=RppxtfAGwVsGkZiJ', port=None, port_specified=False, domain='.google.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=1378597859, discard=False, comment=None, comment_url=None, rest={}, rfc2109=False)]>
http://[MY DOMAIN].com/cookies.php
Date: Thu, 08 Sep 2011 23:51:01 GMT
Server: Apache mod_fcgid/2.3.6 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.17
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

cookies:::Array
(
)

你有什么办法让它工作吗?应该注意的是,上面的代码是文档中的copy+pasted ...,我还尝试了文档提供的其他示例代码,可以在这里找到:http://wwwsearch.sourceforge.net/mechanize/doc.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-10 03:10:59

request1request2来自不同的域。来自google.com的cookie不会发送到'[domain2].com',这是可以理解的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7355804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档