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

 

 

目录
相关文章
|
1月前
|
网络协议 网络安全 数据库
python验证公网ip与内网ip
python验证公网ip与内网ip
25 0
|
3月前
|
存储 网络协议 Ubuntu
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
69 0
Curl指定源端口访问网站
Curl指定源端口访问网站
9381 0
|
3月前
|
Python
pytho2 urllib urllib2 获取本地ip地址和mac地址发送post到指定http服务器
pytho2 urllib urllib2 获取本地ip地址和mac地址发送post到指定http服务器
17 0
|
3月前
|
Python
pytho3 urllib urllib3 获取本地ip地址和mac地址发送post到指定http服务器
pytho3 urllib urllib3 获取本地ip地址和mac地址发送post到指定http服务器
32 0
|
9月前
|
域名解析 网络协议 应用服务中间件
PHP CURL指定host内网通信
PHP CURL指定host内网通信
198 1
PHP CURL指定host内网通信
|
10月前
|
应用服务中间件 数据安全/隐私保护 Python
什么?Python一行命令快速搭建HTTP服务器并公网访问?(二)
什么?Python一行命令快速搭建HTTP服务器并公网访问?(二)
95 0
|
10月前
|
网络安全 Apache C++
什么?Python一行命令快速搭建HTTP服务器并公网访问?(一)
什么?Python一行命令快速搭建HTTP服务器并公网访问?(一)
146 0
|
10月前
|
JavaScript 前端开发 网络协议
Nodejs快速搭建简单的HTTP服务器,并发布公网远程访问
Nodejs快速搭建简单的HTTP服务器,并发布公网远程访问
122 0
|
10月前
|
JavaScript 前端开发 网络协议
使用Nodejs搭建简单的HTTP服务器 - 内网穿透公网远程访问
使用Nodejs搭建简单的HTTP服务器 - 内网穿透公网远程访问
200 0