0

我想知道如何在 python 中使用 urllib2 发送 cookie 和 phpssid?实际上我想阅读一个我用浏览器登录的页面,但是当我尝试用这个脚本阅读它时,我遇到一个似乎说你错过了什么的文本。我的脚本:

#!/usr/bin/python
import urllib2
f = urllib2.urlopen('http://mywebsite.com/sub/create.php?id=20')
content = f.read()
file = open('file.txt', 'w')
file.write(content)
file.close()

我保存的错误消息而不是真实页面:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/number/domains/1number.com/public_html/s4/app/mywidgets.php:1) in /home/number/domains/1number.com/public_html/s4/app/mywidgets.php on line 23

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/number/domains/1number.com/public_html/s4/app/mywidgets.php:1) in /home/number/domains/1number.com/public_html/s4/app/mywidgets.php on line 23

Warning: Cannot modify header information - headers already sent by (output started at /home/number/domains/1number.com/public_html/s4/app/mywidgets.php:1) in /home/number/domains/1number.com/public_html/s4/lib/webservice.php on line 0

确切的问题是什么?(请给我一个简单的方法来实现我想要的)

提前致谢

4

1 回答 1

0

对于 SID,其中一种发送方式是作为查询字符串的一部分,而您已经在这样做了。至少我认为这就是id=20您的 URL 的一部分。

对于 cookie,您想要的一切都在cookielib.

只需创建一个CookieJar用于与服务器的会话是微不足道的。如果您想从浏览器导入 cookie,有以下三种可能性:

  1. 如果您的浏览器使用旧的 Netscape cookie 文件格式,您可以使用FileCookieJar.
  2. 如果您的浏览器使用 sqlite 数据库(至少 Firefox 和 Safari/Chrome 是这样做的),请使用该模块来读取它,然后手动sqlite3填充。CookieJar
  3. 如果最坏的情况变得最糟,请将浏览器中的 cookie 作为硬编码字符串复制并粘贴到脚本中,并CookieJar手动进行流行。

如果您不想阅读有关如何使用的文档cookielib,只需查看最后的示例,这些示例展示了如何使用CookieJarwith urllib2,这正是您想要做的。

如果您有问题,请阅读文档。

同时,您向我们展示的是(a)警告,而不是错误,以及(b)显然是服务器端的问题,而不是您的脚本。服务器永远不应该喷出一堆警告和一个空白页面。如果您或您的一位同事负责服务器代码,则需要首先修复(并且您当前的简单 Python 脚本可以作为一个很好的回归测试用例)。

于 2013-01-07T20:31:38.843 回答