`
ryan.liu
  • 浏览: 134218 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PyCURL访问外网

阅读更多

用途当然是模拟浏览器

# -*- coding: utf-8 -*-

"""
使用pycurl发起HTTP访问
"""

import pycurl, urllib
import StringIO


def curl(url, method="GET", proxy=(), verbose=0, cookie_file="", **kwargs):
    #proxy = ("www.test.com:8080", "SOCKS5", "user:pass")

    req = pycurl.Curl()
    req.setopt(pycurl.FOLLOWLOCATION, 1)
    req.setopt(pycurl.MAXREDIRS, 5)
    req.setopt(pycurl.CONNECTTIMEOUT, 60)
    req.setopt(pycurl.TIMEOUT, 600)
    req.setopt(pycurl.HTTPPROXYTUNNEL, 1)
    req.setopt(pycurl.VERBOSE, verbose)
    agent = kwargs.pop("agent", "Mozilla/4.0")
    req.setopt(pycurl.USERAGENT, agent)
    if cookie_file:
        req.setopt(pycurl.COOKIEJAR, cookie_file)

    req.fp = StringIO.StringIO()
    req.setopt(pycurl.WRITEFUNCTION, req.fp.write)
    data = urllib.urlencode(kwargs)
    if method.upper() == "GET":
        if data:
            url = url + "?" + data
        req.setopt(pycurl.URL, url)
    else:
        req.setopt(pycurl.URL, url)
        req.setopt(pycurl.POSTFIELDS, data)
    if proxy:
        host_port, sock_type, user_pass = proxy
        req.setopt(pycurl.PROXY, host_port)
        req.setopt(pycurl.PROXYTYPE, sock_type)
        req.setopt(pycurl.PROXYUSERPWD, user_pass)

    req.perform()
    return req.fp.getvalue()

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics