UrlLib2 - 在工作区网络上请求ASP.NET网站时拒绝访问

时间:2013-05-01 13:35:35

标签: python asp.net security urllib2 sessionid

我目前正在编写一个脚本,该脚本涉及(希望)屏幕从我的工作场所的网页上抓取大量数据。它是一个ASP.NET页面,在Chrome或Internet Explorer上查看时根本不需要登录。

我已经尝试过“会话加载”我的Internet Explorer会话,以便在Python中通过URLLIB2读取它,但我仍然被拒绝访问(在添加了Internet Explorer正在使用的ASP.NET_Sessionid之后......)

我当然对互联网网络知之甚少,所以我可能在这里做错了,但我需要从Python访问这个网页。如果效果更好,我愿意使用另一个图书馆。

1 个答案:

答案 0 :(得分:1)

也许网页正在检查有效的请求标头?

你真的应该将pycurl用于这类工作。

#!/usr/bin/env python
import pycurl
import cStringIO
buf = cStringIO.StringIO()

pycurl_headers = ['Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                  'Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3',
                  'Accept-Language:en-US,en;q=0.8,bg;q=0.6',
                  'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 \
                  (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31']


c = pycurl.Curl()
c.setopt(c.URL, 'http://google.com')
c.setopt(c.WRITEFUNCTION, buf.write)
c.setopt(c.AUTOREFERER, 1)
c.setopt(c.FOLLOWLOCATION , True)
c.setopt(c.CONNECTTIMEOUT, 5)
c.setopt(c.TIMEOUT, 5)
c.setopt(c.HTTPHEADER, pycurl_headers)
c.perform()

print buf.getvalue()
buf.close()