• 利用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)
  • 相关阅读:
    基于Windows环境下Myeclipse10.0下载安装破解及jdk的下载安装及环境变量的配置
    51 Nod 1791 合法括号子段【分治+字符串】
    一步一步深入理解Dijkstra算法
    POJ 3662 Telephone Lines【Dijkstra最短路+二分求解】
    拍拍网接入微信卡包备战双12圣诞购物季
    公众平台认证订阅号接口调整 增加群发接口等,可授权登录
    搜狗搜索推广品牌专区新增微信互动区展示企业微信公众号内容
    WP8版微信5.4发布 新增夜间模式 暂没小视频
    Kik CEO Ted Livingston发博称要成为西方的微信?
    微信"附近的人"新增商家公众号入驻功能
  • 原文地址:https://www.cnblogs.com/xiaowangzi1110/p/8336338.html
Copyright © 2020-2023  润新知