Https socket 代理

摘要:
Https可以通过ssL套接字直接连接到服务器。导入java.io。InputStream可用;importjava.io。输出流;importjava.security。安全随机;导入javax.net.ssl。SSLContext;导入javax.net.ssl。SSLSocket;importjavax.net.ssl.SSLSock

https直接与服务器通过ssLsocket连接可行

import java.io.InputStream;
import java.io.OutputStream;
import java.security.SecureRandom;

import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;


public class Ssl {

    
    public static void sslSocket2() throws Exception {    
        SSLContext context = SSLContext.getInstance("SSL");    
                   // 初始化    
        TrustManager[] tm = { new  X509TrustManager() {
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }
            public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
            }
            public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
            }
        } };
        
        context.init(null, tm, new SecureRandom());    
        SSLSocketFactory factory = context.getSocketFactory();    
        SSLSocket s = (SSLSocket) factory.createSocket("mail.163.com", 443);    
        System.out.println(s.getEnabledProtocols());
        System.out.println(s.getEnableSessionCreation());
        System.out.println(s.getUseClientMode());
//        System.out.println(s.getHandshakeSession().toString());
        System.out.println(s.getInetAddress());
        System.out.println(s.getSession().toString());
        System.out.println("ok");    
       // s.startHandshake();
        OutputStream output = s.getOutputStream();    
        InputStream input = s.getInputStream();    
        
        output.write(("POST https://mail.163.com/entry/cgi/ntesdoor?df=mail163_letter&from=web&funcid=loginone&iframe=1&language=-1&passtype=1&product=mail163&net=t&style=-1&race=1139_1154_1123_bj&uid=xj-07@163.com HTTP/1.1"
        +" Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*"
                +" User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)"
        +" Content-Type: application/x-www-form-urlencoded"
                +" Accept-Encoding: gzip, deflate"+" Host: mail.163.com"
        +" Content-Length: 106"+" Connection: Keep-Alive"
                +" Cache-Control: no-cache"+" Referer: http://mail.163.com/"
        +" Accept-Language: zh-CN"+" "
            +" savelogin=0&url2=http%3A%2F%2Fmail.163.com%2Ferrorpage%2Ferror163.htm&username=xj-07&password=123456").getBytes());    
        System.out.println("sent: alert");    
        output.flush();    
        
        byte[] buf = new byte[1024];    
        int len = input.read(buf);    
        System.out.println("received:" + new String(buf, 0, len));    
    }  
    public static void main(String[] args) throws Exception {
        
        sslSocket2();
    }
    
}

同样方式将

SSLSocket s = (SSLSocket) factory.createSocket("mail.163.com", 443);   

改为代理就不好使了

SSLSocket s = (SSLSocket) factory.createSocket("127.0.0.1", 8080);   

客户端与代理服务器之间的ssl握手出现了问题,还带进一步分析

免责声明:文章转载自《Https socket 代理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#无法对Paradox数据库进行操作的解决办法科大讯飞语音芯片xfs5152CE,分享遇到的一些坑下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍

1. AMFAMF(是Action Message Format的缩写)是在flash和flex中与远程服务端交换数据的一种格式.它是二进制格式,Flash应用与服务端或数据库通过RPC交换数据时,通常都采用这种格式。AMF 1 诞生于Flash Player6,发展到现在已经变成了了AMF32. RTMPRTMP是Real-Time Messaging...

Android内存分析工具

在Android系统开发过程中,经常会要去分析进程的内存的使用情况,简单介绍下Android内存分析的相关工具。 文章参考: 1.dumpsys 2.memory-analysis-command 1.内存的指标 Item 全称 描述 类型 USS Unique Set Size 进程独占的内存(不包含共享库占用的内存) 物理内存 PSS P...

Android 实现连续两次点击或连续多次点击退出应用

前言:日常开发过程中,经常会遇到“连续点击两次退出应用”的需求(和“连续点击多次”的需求(如:手机从设置中进入开发者选项)。 直接上代码:双击退出: private long exitTime = 0; /** * 连续点击2次退出 */ public void exitAfterTwice() {...

C# 禁止windows程序重复运行的两种基本方法

一般的如果运行一个软件、让他处于运行状态,然后我们再去打开这个程序时就会提示我们“程序已启动或者不能重复启动此程序”,比如QQ对战平台 ,就限制一台机子启动两个QQ对战平台,那么他在C#中是如何实现的呢? 一般有两种方法,我是用的是第一种 方法1: 在项目的第一个窗体的启动事件中 如form1_load() 中添加如下语句=================...

C++-如何使用JSONCPP库来读写JSON文件(搭建环境)

以前我从来没有用过JSON这种文件格式,现在工作上和前端的程序员对接的地方越来越多的使用JSON了。 还好有以前小组长留下的JSONCPP项目代码,作为参考。 也是学了好长时间,才学会怎么使用JSONCPP,但也不是很熟悉。遇到需求,边做边学,一点点完善吧。 什么是JSON? 直接去看百度百科和别人博客是怎么介绍的吧,我就不写了。 https://baik...

精品 IDEA 插件大汇总!值得收藏

轻松提高 Java 开发效率 俗话说,工欲善其事,必先利其器。想要提升编程开发效率,必须选择一款顺手的开发工具。 对于 Java 开发者,JetBrains IDEA 无疑是目前最主流的开发工具,既简单易用、又强大灵活,并且可以通过安装插件全副武装。 今天鱼皮汇总了 IDEA 实用插件,分享给大家,希望帮助大家大幅提高开发效率! 插件较多,建议大家先观看...