hackhttp


hackhttp 是四叶草安全旗下 BugscanTeam 打造的一款 Python 语言的 HTTP 第三方库。是分布式漏洞扫描框架 BugScan 中核心库之一。

hackhttp 现已开源,仓库地址 https://github.com/BugScanTeam/hackhttp

BugScan SDK 已经集成 hackhttp, 导入 SDK 之后可直接使用 hackhttp.http() 进行发包。

注意:原 SDK 中 MiniCurl 已经不再提供更新,为保证兼容性,新版 SDK 中仍可以使用 MiniCurl。如果有项目使用了 MiniCurl,官方建议作者尽快将项目迁移至 hackhttp。

  1. hackhttp.http(url, post=None, **kwargs) -> (code, head, html, redirtct_url, log)

参数

  • url

    要访问的目标地址,类型 String, 必选

    使用范例:

    1. hackhttp.http(url="http://bugscan.net")
  • post

    要发送的 POST 数据

    使用范例:

    1. hackhttp.http(url="xxxxx", post="user=admin&pawd=admin")

kwargs 参数可选值

  • raw

    发送 http 包,可从 burpsuite 上复制

    使用范例:

    1. raw_data = '''GET /index.php HTTP/1.1
    2. Host: www.baidu.com
    3. Connection: keep-alive
    4. Cache-Control: max-age=0
    5. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    6. Upgrade-Insecure-Requests: 1
    7. User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36
    8. Accept-Encoding: gzip, deflate, sdch
    9. Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
    10. '''
    11. hackhttp.http(url="https://www.baidu.com", raw=raw_data)
  • proxy

    代理服务器,参数类型为 tuple,支持 HTTP 协议

    使用范例:

    1. hackhttp.http(url="xxxxx", proxy=('127.0.0.1', 8080))
  • method

    HTTP 请求方式,根据 RFC2616 标准(现行的 HTTP/1.1) 可选的请求方式有:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT,默认为 GET,如果设置了 post 值,会自动修改 method 值为 POST,如果指定了 method 则会修改为指定的值。

  • cookcookie

    自动处理 Cookie 值,参数类型为 bool

    使用样例:

    1. hackhttp.http(url="xxxx", cookcookie=True)
  • header

    设置 HTTP 请求头字段,类型为 String

    使用样例:

    1. hackhttp.http(url="xxxx", header='Referer:https://bugscan.net\r\nUser-Agent: hackhttp user-agent')
  • headers

    设置 HTTP 请求头字段,类型为 dict

    使用样例:

    1. hackhttp.http(url="xxxx", headers={'Referer': 'https://bugscan.net', 'User-Agent': 'hackhttp user-agent'})

    注意: 如果同时设置了 header 和 headers ,那么只会以 header 为准。

    设置 cookie 值,User-Agent 等值可以通过设置 header 来实现,或者在创建 hackhttp 指定

返回值

返回值类型为 tuple, 长度为 5

  1. code, head, html, redirect_url, log = hackhttp.http(url="xxxx")
  • code

    HTTP 状态码,类型为 int

  • head

    HTTP 响应头,类型为 String

  • html

    HTTP 响应体,类型为 String

  • redirect_url

    遇到 HTTP 302 后的跳转地址,如果无跳转则为请求的地址

  • log

    HTTP 日志信息,类型为 dict

    • url

      本次请求的第一个 URL 地址

    • request

      HTTP 请求报文

    • response

      HTTP 响应报文