标签: httplib

如何使用请求库从http请求中获取IP地址?

我正在使用python中的请求库发出HTTP请求,但是我需要来自响应http请求的服务器的ip地址,并且我试图避免进行两次调用(并且可能有一个不同的ip地址来自响应的那个请求.

那可能吗?有没有python http库允许我这样做?

ps:我还需要发出HTTPS请求并使用经过身份验证的代理.

更新1:

例:

import requests

proxies = {
  "http": "http://user:password@10.10.1.10:3128",
  "https": "http://user:password@10.10.1.10:1080",
}

response = requests.get("http://example.org", proxies=proxies)
response.ip # This doesn't exist, this is just an what I would like to do
Run Code Online (Sandbox Code Playgroud)

那么,我想知道从响应中的方法或属性连接的IP地址请求.在其他库中,我能够通过找到sock对象并使用getpeername()方法来做到这一点.

python pycurl httplib2 httplib python-requests

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

如何在Python中创建PATCH请求?

有没有办法在Python中使用PATCH http方法发出请求?

我尝试使用httplib,但它不接受PATCH作为方法参数.

python patch http httplib

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

在运行数小时后永久"名称解析暂时失败"

在Linux上运行了几个小时后,我使用urllib2,httplib和线程的Python 2.6程序开始为每个请求引发此错误:

<class 'urllib2.URLError'> URLError(gaierror(-3, 'Temporary failure in name resolution'),)

如果我重新启动程序,它会再次开始工作.我的猜测是某种资源枯竭但我不知道如何检查它.我该如何诊断和解决问题?

python urllib2 httplib

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

我如何让python httplib接受不受信任的证书?

我如何让python httplib接受不受信任的证书?我在我的网络服务器上创建了一个蛇油/自签名证书,而我的python客户端无法连接,因为我使用的是不受信任的证书.

我宁愿在我的客户端代码中修复它,而不是让它在我的系统上受信任.

import httplib


def main():
    conn = httplib.HTTPSConnection("127.0.0.1:443")
    conn.request("HEAD","/")
    res = conn.getresponse()
    print res.status, res.reason
    data = res.read()
    print len(data)


if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

python httplib

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

WSlI中的httplib CannotSendRequest错误

我和Django使用了两个不同的python oauth库来通过twitter进行身份验证.使用WSGI进行apache设置.当我重新启动服务器时,一切都运行良好大约10分钟,然后httplib似乎锁定(请参阅以下错误).

我只运行了1个进程和1个WSGI线程,但这似乎没有任何区别.

我无法弄清楚为什么它会锁定并给出这个CannotSendRequest错误.我花了很多时间来解决这个令人沮丧的问题.任何有关它的提示/建议将不胜感激.

File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py", line 92, in get_response
  response = callback(request, *callback_args, **callback_kwargs)

File "mypath/auth/decorators.py", line 9, in decorated
  return f(*args, **kwargs)

File "mypath/auth/views.py", line 30, in login
  token = get_unauthorized_token()

File "/root/storm/eye/auth/utils.py", line 49, in get_unauthorized_token
  return oauth.OAuthToken.from_string(oauth_response(req))

File "mypath/auth/utils.py", line 41, in oauth_response
  connection().request(req.http_method, req.to_url())

File "/usr/lib/python2.5/httplib.py", line 866, in request
  self._send_request(method, url, body, headers)

File "/usr/lib/python2.5/httplib.py", line 883, in _send_request
  self.putrequest(method, url, **skips)

File "/usr/lib/python2.5/httplib.py", line 770, in putrequest
  raise CannotSendRequest()
Run Code Online (Sandbox Code Playgroud)

CannotSendRequest

python twitter wsgi oauth httplib

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

Python脚本在没有下载整个页面的情况下查看是否存在网页?

我正在尝试编写一个脚本来测试网页是否存在,如果不下载整个页面就会检查它会很好.

这是我的跳跃点,我已经看到多个示例以相同的方式使用httplib,但是,我检查的每个站点都返回false.

import httplib
from httplib import HTTP
from urlparse import urlparse

def checkUrl(url):
    p = urlparse(url)
    h = HTTP(p[1])
    h.putrequest('HEAD', p[2])
    h.endheaders()
    return h.getreply()[0] == httplib.OK

if __name__=="__main__":
    print checkUrl("http://www.stackoverflow.com") # True
    print checkUrl("http://stackoverflow.com/notarealpage.html") # False
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑

有人建议这个,但他们的帖子被删除.. urllib2是否避免下载整个页面?

import urllib2

try:
    urllib2.urlopen(some_url)
    return True
except urllib2.URLError:
    return False
Run Code Online (Sandbox Code Playgroud)

python httplib urlparse

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

通过代理隧道httplib

我试图弄清楚如何通过代理将数据发送到服务器.我希望通过tor可以实现这一点,但是当使用SOCKS时,使用httplib显然是不可能的(如果我错了,请纠正我)

这就是我现在所拥有的

import httplib
con = httplib.HTTPConnection("google.com")
con.set_tunnel(proxy, port)
con.send("Sent Stuff")
Run Code Online (Sandbox Code Playgroud)

问题是,隧道设置时似乎冻结了.谢谢你的帮助.

python sockets proxy tunnel httplib

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

在请求库中,如何避免"HttpConnectionPool已满,丢弃连接"警告?

我正在使用带有会话的python请求库:

def _get_session(self):
    if not self.session:
        self.session = requests.Session()
    return self.session
Run Code Online (Sandbox Code Playgroud)

有时我会在日志中收到此警告:

[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么这是警告而不是例外?

这是负责此的代码(来自http://pydoc.net/Python/requests/0.8.5/requests.packages.urllib3.connectionpool/):

def _put_conn(self, conn):
    try:
        self.pool.put(conn, block=False)
    except Full:
        # This should never happen if self.block == True
        log.warning("HttpConnectionPool is full, discarding connection: %s"
                    % self.host)
Run Code Online (Sandbox Code Playgroud)

为什么会遇到这种异常?如果它被重新启动,我可以在我的代码中处理此异常,方法是创建新会话并删除旧会话.

如果它只是一个警告,是否意味着它不会以任何方式影响我的结果?我可以忽略它吗?如果没有,我该如何处理这种情况?

python multithreading httplib python-requests grequests

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

当我使用python请求检查网站时,如果网站将我重定向到另一个页面,我会知道吗?

我的意思是,如果我去"www.yahoo.com/thispage",雅虎已经设置了一个过滤器来重定向/ thispage到/ thatpage.因此,每当有人访问/ thispage时,他/她将登陆/该页面.

如果我使用httplib/requests/urllib,它会知道有重定向吗?什么错误页面?无论何时找不到页面,某些站点都会将用户重定向到/ errorpage.

python httplib python-requests

13
推荐指数
2
解决办法
9956
查看次数

如何在Python中发送和接收HTTP POST请求

我需要一个简单的客户端方法,它可以在HTTP POST请求中发送布尔值,以及一个侦听的服务器端函数,并且可以将POST内容保存为var.

我无法找到有关如何使用的信息httplib.

请给我一个简单的例子,使用localhost作为http连接.

python http http-post httplib

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