PyCURL访问外网

简介: 用途当然是模拟浏览器 # -*- coding: utf-8 -*- """ 使用pycurl发起HTTP访问 """ import pycurl, urllib import StringIO def curl(url, method="GET", prox...

用途当然是模拟浏览器

# -*- 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()

 

 

目录
相关文章
|
5月前
|
存储 网络协议 Ubuntu
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
187 0
Curl指定源端口访问网站
Curl指定源端口访问网站
9771 4
|
2月前
|
JavaScript
NodeJs——无法使用内网IP访问
NodeJs——无法使用内网IP访问
32 1
|
5月前
|
网络协议 安全
ensp中nat server 公网访问内网服务器
ensp中nat server 公网访问内网服务器
|
5月前
|
API 网络架构 Python
python验证公网ip与内网ip
python验证公网ip与内网ip
|
5月前
|
人工智能 应用服务中间件 nginx
树莓派上使用Nginx通过内网穿透实现无公网IP访问内网本地站点
树莓派上使用Nginx通过内网穿透实现无公网IP访问内网本地站点
|
域名解析 网络协议 应用服务中间件
PHP CURL指定host内网通信
PHP CURL指定host内网通信
314 1
PHP CURL指定host内网通信
|
安全 网络安全 Windows
服务器的内网可以访问,外网却不能访问的问题
服务器的内网可以访问,外网却不能访问的问题
|
安全 应用服务中间件 网络安全
【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透」
【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透」
501 0
|
JavaScript 前端开发 网络协议
使用Nodejs搭建简单的HTTP服务器 - 内网穿透公网远程访问
使用Nodejs搭建简单的HTTP服务器 - 内网穿透公网远程访问
240 0