如何在python中使用urllib2发送cookie和phpsessid?

时间:2013-01-07 19:53:47

标签: python cookies

我想知道如何在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

究竟是什么问题?(请给我一个简单的方法来实现我想要的东西)

提前致谢

1 个答案:

答案 0 :(得分:0)

对于SID,发送它的方法之一是作为查询字符串的一部分,而您已经这样做了。至少我认为这是你网址的id=20部分。

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

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

  1. 如果您的浏览器使用旧的Netscape Cookie文件格式,则可以使用FileCookieJar
  2. 如果您的浏览器使用sqlite数据库(至少使用Firefox和Safari / Chrome),请使用sqlite3模块进行阅读,然后手动填充CookieJar
  3. 如果最糟糕的情况发生,请将您的浏览器中的Cookie复制并粘贴到您的脚本中作为硬编码字符串并手动使用CookieJar
  4. 如果您不想阅读有关如何使用cookielib的文档,请参阅最后的the examples,其中显示如何使用CookieJar urllib2 },这正是你想要做的。

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

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