zoukankan      html  css  js  c++  java
  • 利用Python处理向不受信任主机发送请求

    ,HTTP vs HTTPS

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

    为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

    HTTPS和HTTP的区别主要为以下四点:

    (1)  https协议需要到ca申请证书,一般免费证书很少,需要交费。

    (2)  http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

    (3)  http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

    (4)  http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

    理解的部分倒是容易啊, 只是用代码处理的时候稍有不同.

    以下会用到python原生模块http.client, 升级版urllib, 封装很优美的requests.

    http.client处理受信息的主机, 倒是和普通地处理http请求差不多.

    只是在处理不受信任的主机时, 会引入context参数. 直接使用原生模块发送该请求的貌似还是少数, 在网上资料很难找到. 翻看源码的时候, 发现了一个参数context

    添加context参数以后, 可以正常向不受信任的主机发送请求了. 以下是http.client,  urllib, 以及requests的处理方式.

    import http.client, ssl
    
    #   禁用所有的验证
    context = ssl._create_unverified_context()
    #   与服务器建立连接, 并使用context参数
    conn = http.client.HTTPSConnection('localhost',8443, context=context)
    url = '/agileone/'
    #   向服务器发起GET请求
    conn.request('GET',url)
    #   获取响应并解码
    response = conn.getresponse().read().decode()
    #   打印响应
    print(response)
    import urllib.request
    
    context = ssl._create_unverified_context()
    url = 'https://localhost:8443/agileone/'
    r = urllib.request.urlopen(url, context=context)
    response = r.read().decode()
    print(response)
    #   利用证书处理不信任站点
    import requests
    url = 'https://localhost:8443/agileone/'
    r = requests.get(url, verify = False)
    r.encoding = 'utf-8'
    print(r.text)
  • 相关阅读:
    python自动化测试,将测试结果的报告写入本地中(HTMLTestRunner)
    谷歌+selenuim ide导出python代码 详细代码
    谷歌+selenium插件的安装
    C# List转DataTable(支持匿名类型)
    喵的Unity游戏开发之路
    喵的Unity游戏开发之路
    喵的Unity游戏开发之路
    喵的Unity游戏开发之路
    喵的Unity游戏开发之路
    Unity3D游戏开发入门引导:Unity3D收费方案和版本、下载地址、安装教程
  • 原文地址:https://www.cnblogs.com/xiaowangzi1110/p/8336338.html
Copyright © 2011-2022 走看看