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

 

 

目录
相关文章
Curl指定源端口访问网站
Curl指定源端口访问网站
9420 0
|
23天前
|
API 网络架构 Python
python验证公网ip与内网ip
python验证公网ip与内网ip
|
4月前
|
Python
pytho3 urllib urllib3 获取本地ip地址和mac地址发送post到指定http服务器
pytho3 urllib urllib3 获取本地ip地址和mac地址发送post到指定http服务器
32 0
|
4月前
|
Python
pytho2 urllib urllib2 获取本地ip地址和mac地址发送post到指定http服务器
pytho2 urllib urllib2 获取本地ip地址和mac地址发送post到指定http服务器
19 0
|
10月前
|
域名解析 网络协议 应用服务中间件
PHP CURL指定host内网通信
PHP CURL指定host内网通信
212 1
PHP CURL指定host内网通信
|
11月前
|
网络安全 Apache C++
什么?Python一行命令快速搭建HTTP服务器并公网访问?(一)
什么?Python一行命令快速搭建HTTP服务器并公网访问?(一)
157 0
|
11月前
|
应用服务中间件 数据安全/隐私保护 Python
什么?Python一行命令快速搭建HTTP服务器并公网访问?(二)
什么?Python一行命令快速搭建HTTP服务器并公网访问?(二)
100 0
|
11月前
|
JavaScript 前端开发 网络协议
Nodejs快速搭建简单的HTTP服务器,并发布公网远程访问
Nodejs快速搭建简单的HTTP服务器,并发布公网远程访问
124 0
|
11月前
|
JavaScript 前端开发 网络协议
使用Nodejs搭建简单的HTTP服务器 - 内网穿透公网远程访问
使用Nodejs搭建简单的HTTP服务器 - 内网穿透公网远程访问
205 0
|
12月前
|
Windows
ngrok-外网访问内网工具NGROK的使用
ngrok-外网访问内网工具NGROK的使用
157 0