各种编程语言忽略http的SSL证书认证

func httpPost(url, body string) ([]byte, error) {

req, err := http.NewRequest(http.MethodPost, urlPre+url, strings.NewReader(body))

if err != nil {

    return nil, err

}

req.Header.Add("Content-Type", "application/x-www-form-urlencoded")

client := &http.Client{ // 忽略证书验证

    Transport: &http.Transport{

        TLSClientConfig: &tls.Config{

            InsecureSkipVerify: true,

        },

    },

}

resp, err := client.Do(req)

if resp != nil {

    defer resp.Body.Close()

}

if err != nil {

    return nil, err

}

data, err := ioutil.ReadAll(resp.Body)

if err != nil {

    return nil, err

}

return data, nil

}

Python语言

import json

import requests

try:

# verify = False 表示忽略证书

response = requests.post("http://www.baidu.com/",verify = False, headers = header, data = "")

data = json.loads(response.text)

print(data)

except Exception as e:

print('error:', e)

Ruby语言

require ‘rest-client’

require ‘json’

begin

# :verify_ssl => OpenSSL::SSL::VERIFY_NONE 表示忽略证书

resp = RestClient::Request.execute(method: :post, url: "http://www.baidu.com/", payload: "", headers: headers, :verify_ssl => OpenSSL::SSL::VERIFY_NONE)

data = JSON.parse(resp.body)

puts(data)

rescue => e

puts("#{e.class}, #{e.message}")

end

Java语言

package iotp;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.MalformedURLException;

import java.net.URL;

import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;

import javax.net.ssl.HttpsURLConnection;

import javax.net.ssl.SSLContext;

import javax.net.ssl.SSLSession;

import javax.net.ssl.TrustManager;

import javax.net.ssl.X509TrustManager;

public class janbar {

public static void main(String[] args) {

    trustAllHosts(); // 只在开头执行一次即可

    String data = httpPost("http://www.baidu.com/", "");

    System.out.println(data);

}

public static String httpPost(String httpUrl, String param) {

    HttpsURLConnection connection = null;

    InputStream is = null;

    OutputStream os = null;

    BufferedReader br = null;

    String result = null;

    try {

        // 通过远程url连接对象打开连接

        connection = (HttpsURLConnection) new URL(urlPre + httpUrl).openConnection();

        // 忽略证书认证

        connection.setHostnameVerifier(DO_NOT_VERIFY);

        // 设置连接请求方式

        connection.setRequestMethod("POST");

        // 设置连接主机服务器超时时间:15000毫秒

        connection.setConnectTimeout(15000);

        // 设置读取主机服务器返回数据超时时间:60000毫秒

        connection.setReadTimeout(60000);

        // 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true

        connection.setDoOutput(true);

        // 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无

        connection.setDoInput(true);

        // 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。

        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        // 通过连接对象获取一个输出流

        os = connection.getOutputStream();

        // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的

        os.write(param.getBytes());

        // 通过连接对象获取一个输入流,向远程读取

        if (connection.getResponseCode() == 200) {

            is = connection.getInputStream();

            // 对输入流对象进行包装:charset根据工作项目组的要求来设置

            br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

            StringBuffer sbf = new StringBuffer();

            String temp = null;

            // 循环遍历一行一行读取数据

            while ((temp = br.readLine()) != null) {

                sbf.append(temp);

                sbf.append("\r\n");

            }

            result = sbf.toString();

        }

    } catch (MalformedURLException e) {

        e.printStackTrace();

    } catch (IOException e) {

        e.printStackTrace();

    } finally {

        // 关闭资源

        if (null != br) {

            try {

                br.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        if (null != os) {

            try {

                os.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        if (null != is) {

            try {

                is.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        // 断开与远程地址url的连接

        connection.disconnect();

    }

    return result;

}

private static void trustAllHosts() {

    // Create a trust manager that does not validate certificate chains

    TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {

        public java.security.cert.X509Certificate[] getAcceptedIssuers() {

            return new java.security.cert.X509Certificate[] {};

        }

        public void checkClientTrusted(X509Certificate[] chain, String authType) {

        }

        public void checkServerTrusted(X509Certificate[] chain, String authType) {

        }

    } };

    // Install the all-trusting trust manager

    try {

        SSLContext sc = SSLContext.getInstance("TLS");

        sc.init(null, trustAllCerts, new java.security.SecureRandom());

        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

    } catch (Exception e) {

        e.printStackTrace();

    }

}

private final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {

    public boolean verify(String hostname, SSLSession session) {

        return true;

    }

};

}

PHP语言

<?php function httpPost($url, $content) { $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type','application/x-www-form-urlencoded')); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $content); $response = curl_exec($ch); if($error=curl_error($ch)){ die($error); } curl_close($ch); return $response; } $data = httpPost("http://www.baidu.com/", ""); $data = json_decode($data, true); var_dump($data); C#语言 using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; namespace SundrayApi { class Program { static void Main(string[] args) { string data = apiPost("http://www.baidu.com/", ""); Console.WriteLine(data); Console.ReadLine(); } static string apiPost(string url, string body) { string content = string.Empty; try { /* 跳过ssl验证 */ ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; HttpWebRequest request = HttpWebRequest.Create(preUrl + url) as HttpWebRequest; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; byte[] data = Encoding.UTF8.GetBytes(body); Stream newStream = request.GetRequestStream(); newStream.Write(data, 0, data.Length); newStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream, Encoding.UTF8); content = reader.ReadToEnd(); reader.Close(); response.Close(); } catch (Exception ex) { content = ex.ToString(); } return content; } } } C/C++语言 c语言需要编译一下下,如下流程即可。 wget https://curl.haxx.se/download/curl-7.73.0.tar.gz ./configure make gcc test.c -l curl -L /root/c/curl/curl-7.73.0/lib/.libs -I /root/c/curl/curl-7.73.0/include #include
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值