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月前
|
机器学习/深度学习 人工智能 安全
大模型攻防演武录·第五名的进击
本文深度解析2025阿里天池大模型攻防竞赛全国第五名的技术实战经验,涵盖从攻击绕过到终极防御的完整策略演进,揭示AI安全攻防背后的技术逻辑与认知边界。
222 9
|
人工智能 安全 数据安全/隐私保护
大模型安全撬壳计划(二) 参加大模型安全撬壳计划的一点心得
本文分享了作者在参与LLM及多模模型实践中的经验与心得,涵盖代码编写、多轮对话处理、本地模拟交互、越狱方法等内容,并提供了多个实用代码示例与策略建议。同时总结了对模型评分与文档支持的改进建议,适合对LLM应用与对抗攻击感兴趣的开发者与研究者参考。
935 0
|
数据采集 JSON 算法
模拟 TLS 指纹实现反反爬
模拟 TLS 指纹实现反反爬
410 3
|
7月前
|
人工智能 安全 生物认证
AI-Infra-Guard:腾讯开源AI基础设施安全评估神器,一键扫描漏洞
AI-Infra-Guard 是腾讯开源的高效、轻量级 AI 基础设施安全评估工具,支持 28 种 AI 框架指纹识别和 200 多个安全漏洞数据库,帮助用户快速检测和修复 AI 系统中的安全风险。
810 7
|
9月前
|
Java 中间件 调度
SpringBoot整合XXL-JOB【03】- 执行器的使用
本文介绍了如何将调度中心与项目结合,通过配置“执行器”实现定时任务控制。首先新建SpringBoot项目并引入依赖,接着配置xxl-job相关参数,如调度中心地址、执行器名称等。然后通过Java代码将执行器注册为Spring Bean,并声明测试方法使用`@XxlJob`注解。最后,在调度中心配置并启动定时任务,验证任务是否按预期执行。通过这些步骤,读者可以掌握Xxl-Job的基本使用,专注于业务逻辑的编写而无需关心定时器本身的实现。
1812 10
SpringBoot整合XXL-JOB【03】-  执行器的使用
|
Java Android开发 iOS开发
八款开源 Android 游戏引擎 (巨好的资源)
初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,一边自暴自弃的抱怨Android平台游戏开发难度太高,又连个像样的游 戏引擎也没有,甚至误以为使用Java语言开发游戏是一件费力不讨好且没有出路的事情。
2495 0
|
安全 网络安全
看图识WAF-搜集常见WAF拦截页面
看图识WAF-搜集常见WAF拦截页面
913 1
|
数据采集 Web App开发 运维
spider 网页爬虫中的 AWS 实例数据获取问题及解决方案
spider 网页爬虫中的 AWS 实例数据获取问题及解决方案
|
存储 Web App开发 移动开发
【BP靶场portswigger-客户端14】点击劫持-5个实验(全)
【BP靶场portswigger-客户端14】点击劫持-5个实验(全)
663 0
【BP靶场portswigger-客户端14】点击劫持-5个实验(全)