标签: urllib3

Python请求和CAS

我还没有找到任何人使用Python通过CAS的例子。希望肯尼斯·雷茨(Kenneth Reitz)可以向我展示“请求”如何使这一过程变得容易...

基本上,我无法通过CAS登录...从不对我的Python尝试进行身份验证。(请注意,我定义了两个url。...url1是主网页,url2是指向CAS站点的重定向链接...我已经知道了重定向链接,因此很简单)。

我的理解是,我要做的就是捕获CAS作为cookie发送给我的JsessionId,然后获取该cookie,然后将jsessionid附加回url上,并使用我的用户名/密码作为POST发送回CAS )。但是,此脚本每次都会失败。

CAS专家可以帮助我吗?我根本无法弄清楚为什么它不能对我进行身份验证。

import sys
import requests

my_config = {'verbose': sys.stderr }

url1 = 'http://agnes:8080'
url2 = 'https://agnes:8543/irisCAS/login?service=http%3A%2F%2Fagnes%3A8080%2FirisRootWeb%2Fj_spring_cas_security_check'

response = requests.get(url1, headers=headers, verify=False)
print response.cookies

cookies = response.cookies
response = requests.post(url2, headers=headers, verify=False, config=my_config, params=cookies, auth=('username', 'password'))

print response.status_code
print response.content
Run Code Online (Sandbox Code Playgroud)

输出..注意如何将jsessionId附加到url2,所以很好。.....我认为。

{'JSESSIONID': 'EEE38382A1D5AAACA58E12433BDA0BFF'}

2012-05-18T15:04:17.668601   POST   https://agnes:8543/irisCAS/login?service=http%3A%2F%2Fagnes%3A8080%2FirisRootWeb%2Fj_spring_cas_security_check&JSESSIONID=EEE38382A1D5AAACA58E12433BDA0BFF

200

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
...
...
        </script>

        <form id="fm1" class="fm-v clearfix" action="/irisCAS/login;jsessionid=30ABCAC79FEA5B48399053939530A608?service=http%3A%2F%2Fagnes%3A8080%2FirisRootWeb%2Fj_spring_cas_security_check&amp;JSESSIONID=B6235434D64C5E2E6C063BA3E1C1AC43" method="post">

            <div class="box fl-panel" id="login">
            <!-- Congratulations on bringing …
Run Code Online (Sandbox Code Playgroud)

cas urllib3 python-requests

3
推荐指数
1
解决办法
2786
查看次数

使用 urllib3 进行多部分表单编码和发布

我正在尝试将csv文件上传到此站点。但是,我遇到了一些问题,我认为这源于不正确mimetype(也许)。

\n\n

我正在尝试通过 手动发布文件urllib2,因此我的代码如下所示:

\n\n
import urllib\nimport urllib2\nimport mimetools, mimetypes\nimport os, stat\nfrom cStringIO import StringIO\n\n#============================\n# Note: I found this recipe online. I can\'t remember where exactly though.. \n#=============================\n\nclass Callable:\n    def __init__(self, anycallable):\n        self.__call__ = anycallable\n\n# Controls how sequences are uncoded. If true, elements may be given multiple values by\n#  assigning a sequence.\ndoseq = 1\n\nclass MultipartPostHandler(urllib2.BaseHandler):\n    handler_order = urllib2.HTTPHandler.handler_order - 10 # needs to run first\n\n    def http_request(self, request):\n        data = …
Run Code Online (Sandbox Code Playgroud)

python urllib2 urllib3

3
推荐指数
1
解决办法
1万
查看次数

urllib3 调试请求头

我正在使用 urllib3,我想查看发送的标头。

我在文档中找到了这个,但它没有打印标题:

urllib3.add_stderr_logger(1)
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

urllib3 python-3.x

3
推荐指数
1
解决办法
3690
查看次数

在Python中使用这两种方式建立Web连接的实际区别是什么?

我注意到有几种方法可以为Web报废提供http连接.我不确定某些是更近期和最新的编码方式,还是它们只是具有不同优点和缺点的不同模块.更具体地说,我试图了解以下两种方法之间的区别,你会推荐什么?

1)使用urllib3:

http = PoolManager()
r = http.urlopen('GET', url, preload_content=False)
soup = BeautifulSoup(r, "html.parser")
Run Code Online (Sandbox Code Playgroud)

2)使用请求

html = requests.get(url).content
soup = BeautifulSoup(html, "html5lib")
Run Code Online (Sandbox Code Playgroud)

是什么将这两个选项区分开来,除了它们需要导入不同模块的简单事实?

http urllib3 python-3.x python-requests bs4

3
推荐指数
1
解决办法
449
查看次数

蟒蛇| HTTP - 如何在下载前检查文件大小

我正在使用 urllib3 爬网。示例代码:

from urllib3 import PoolManager

pool = PoolManager()
response = pool.request("GET", url)
Run Code Online (Sandbox Code Playgroud)

问题是我可能会偶然发现 url 是一个非常大的文件的下载,我并不介意下载它。

我发现了这个问题 - Link - 它建议使用urlliband urlopen。我不想两次联系服务器。

我想将文件大小限制为 25MB。有没有办法做到这一点urllib3

python http urllib urllib2 urllib3

3
推荐指数
1
解决办法
3078
查看次数

urllib3 HTTPResponse.read() 返回空字节

我正在尝试阅读网站的内容,但我得到一个空的字节对象b''.

import urllib3
from urllib3 import PoolManager
urllib3.disable_warnings()
https = PoolManager()

r = https.request('GET', 'https://minemen.club/leaderboards/practice/')

print(r.status)
print(r.read())
Run Code Online (Sandbox Code Playgroud)

当我在网络浏览器中打开 URL 时,我看到了该网站,结果r.status为 200(成功)。

为什么不r.read()返回内容?

python urllib3

3
推荐指数
1
解决办法
864
查看次数

如何下载部分文件

我正在编写一个程序,可以将文件下载到1Gb以下的任何地方.现在我正在使用请求包来下载文件,虽然它有效(我认为它有时会超时)但它很慢.我已经看到了一些使用urllib2的多部分下载示例的示例,但我正在寻找一种方法来使用urllib3或请求,如果该包具有该功能.

download urllib3 python-3.3 python-requests

2
推荐指数
1
解决办法
2526
查看次数

如何将数据传递给 urllib3 POST 请求方法?

我想使用urllib3库来通过库发出 POST 请求,requests因为它具有连接池和重试等功能。但我找不到以下POST请求的替代品。

import requests
result = requests.post("http://myhost:8000/api/v1/edges", json={'node_id1':"VLTTKeV-ixhcGgq53", 'node_id2':"VLTTKeV-ixhcGgq51", 'type': 1 })
Run Code Online (Sandbox Code Playgroud)

这在requests库中运行良好,但我无法将其转换为urllib3请求。我试过

import json
import urllib3
urllib3.PoolManager().request("POST","http://myhost:8000/api/v1/edges", body=json.dumps(dict(json={'node_id1':"VLTTKeV-ixhcGgq53", 'node_id2':"VLTTKeV-ixhcGgq51", 'type': 1 })))
Run Code Online (Sandbox Code Playgroud)

问题是jsonPOST请求中使用as 键传递原始 json 数据。

python urllib3 python-2.7 python-requests

2
推荐指数
1
解决办法
1万
查看次数

关于使用urllib3替换urllib2

我试图使用以下代码段。我使用的是Python 3,而urllib3不是urllib2。我想知道如何更换这一部分fh = urllib2.urlopen('http://people.ku.edu/~gbohling/geostats/WGTutorial.zip') data = fh.read()urllib3。谢谢。

clusterfile = 'ZoneA.dat'
if not os.path.isfile(clusterfile):
    fh = urllib2.urlopen('http://people.ku.edu/~gbohling/geostats/WGTutorial.zip')
    data = fh.read()
    fobj = StringIO.StringIO(data)
    myzip = zipfile.ZipFile(fobj,'r')
    myzip.extract(clusterfile)
    fobj.close()
    fh.close()
Run Code Online (Sandbox Code Playgroud)

python urllib urllib2 urllib3

2
推荐指数
1
解决办法
6883
查看次数

urllib3:抛出 MaxRetryError 时如何获得响应?

我正在使用 Python urllib3+ 中的 Retry 模块来处理requests第 3 方 API 出现零星错误的情况。我遇到的一个问题是,如果重试一直失败,我会得到一个exceptions.MaxRetryError并且永远不会看到响应是什么。如果有来自服务器的有价值的调试数据怎么办?

有没有办法在会抛出的情况下仍然得到响应MaxRetryError

下面是我的代码

from requests.packages.urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter

def req_with_retry(retries=3, backoff_factor=0.5, status_forcelist=(400, 404, 500, 502, 504,), method_whitelist=frozenset(['POST', 'HEAD', 'TRACE', 'GET', 'PUT', 'OPTIONS', 'DELETE']), session=None,):
    ''' 
    this returns a session that functions like the requests module but with retries built it for certain status codes
    '''
    session = session or requests.Session()
    retry = Retry(
        total=retries,
        read=retries,
        connect=retries,
        backoff_factor=backoff_factor,
        status_forcelist=status_forcelist,
        method_whitelist=method_whitelist
    )
    adapter …
Run Code Online (Sandbox Code Playgroud)

python urllib3 python-requests

2
推荐指数
1
解决办法
1377
查看次数