访问https站点python(urllib2,请求)

2024-09-27 21:25:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试访问以下网站https://electionbuddy.com/elections/4322/results

我试过使用handler = urllib2.HTTPBasicAuthHandler(password_mgr)etc和requests,但是webapp只是返回一个页面,说我没有权限(用户/通行证无处可去)。我试过萤火虫,但没有发现明显的迹象。如果需要,我可以编辑和附加。

我怎么能登录到这样一个网站呢?正如Burhan所提到的,在这种情况下,您需要“登录并保存发送的cookies,然后在下一个请求中将它们传递到结果页面”。

为了跟进这件事-为什么下面的不起作用

import requests
payload = {'user_username': 'xxxxxxxxx', 'user_password': 'xxxxxxx'}
r = requests.post("https://electionbuddy.com/login", data=payload)
r = requests.get('https://electionbuddy.com/elections/xxxx/results', cookies=r.cookies)
print r.text

似乎有一个身份验证令牌,与会话id不同。但不确定如何进行此操作。。。

谢谢


Tags: httpscom网站password页面urllib2requestsresults
3条回答

我曾经不得不访问一个受用户名/密码保护的url,并使用以下方法解决了这个问题

import urllib2
import base64
theurl = 'http://abc.com/A.htm'

username='AAA'
password='BBB'

req = urllib2.Request(theurl)


base64string = base64.encodestring(
            '%s:%s' % (username, password))[:-1]
authheader =  "Basic %s" % base64string
req.add_header("Authorization", authheader)
try:
    handle = urllib2.urlopen(req)
except IOError, e:
    print "It looks like the username or password is wrong."
content = handle.read()

希望这有帮助

我想这个网站会在你登录时为你制作一个会话cookie。 尝试首先登录,看看是否抛出一个cookie,如果是,请将cookie提供给您需要的页面。 你熟悉库基里布吗?

from urllib2 import *
import cookielib

cj = cookielib.CookieJar()
opener = build_opener(
             HTTPHandler(), HTTPSHandler(), HTTPErrorProcessor(), 
             HTTPRedirectHandler(), HTTPCookieProcessor(cj))
params = urllib.urlencode(dict(USER=user, PASSWORD=pw, action='Login'))

# Response here will have cookies, use info() to show
response = opener.open(loginurl, params)
print response.info()

# cookies automatically sent to the page you wanted
response2 = opener.open(your_url)

只是加上答案,如果有人发现同样的问题。

问题中给出的url是安全的,即使用HTTPS。

因此,其他地方建议的HTTP基本身份验证显然行不通。基本身份验证在纯http上工作。Https是加密。

使用诸如pycUrlhttplib之类的库可能是完全提供HTTPS支持的正确选择

相关问题 更多 >

    热门问题