搜索
aardio官方社区 门户 查看主题

使用openssl访问https网站

发布者: cad | 发布时间: 2018-1-26 10:42| 查看数: 788| 评论数: 1|帖子模式

本帖最后由 cad 于 2018-1-26 10:51 编辑

import wsock;
import wsock.err;

io.open()


::Openssl = ..raw.loadDll(
"ssleay32.dll","ssleay32.dll","cdecl")


if(! ..wsock.open() ){
   
error( ( ..wsock.err.lasterr() ),2 )
}

var hSocket= ..wsock.socket(0x2/*_AF_INET*/,0x1/*_SOCK_STREAM 建立流式套接口*/,6/*_IPPROTO_TCP*/ )
if( hSocket = _INVALID_SOCKET ){
    wsock.close()
//关闭wsock
    error("hSocket")
}

var service = ..wsock.sockaddr_in( "www.baidu.com",443 );
if(!service)
   
error("service")
service.sin_family = 0x2
/*_AF_INET*/

if ..wsock.connect( hSocket,service,..raw.sizeof(service)) =-1/*_SOCKET_ERROR*/ {  
   
error("connect")
}

// 初始化ssl
::Openssl.SSL_load_error_strings()              
::Openssl.SSL_library_init()                    


var sslCtx = ::Openssl.SSL_CTX_newP(  ::Openssl.SSLv23_client_methodP()  )
if !sslCtx
   
error("sslCtx")
   
var ssl = ::Openssl.SSL_newP(sslCtx)   
if !ssl
   
error("ssl")                                            

// 绑定ssl套接字
::Openssl.SSL_set_fd(ssl, hSocket)
// 建立ssl连接
::Openssl.SSL_connect(ssl)


var data = /***********
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9
***********/

data ++=
'\r\n\r\n'

// 发送请求
::Openssl.SSL_write(ssl, data, #data)

// 读取数据
var buf = raw.buffer(200)
while( ::Openssl.SSL_read(ssl,buf,200)  ){
    io.print( buf )
}


// 释放资源
..wsock.closesocket(hSocket)
..wsock.close();
::Openssl.SSL_shutdown(ssl)
::Openssl.SSL_free(ssl)
::Openssl.SSL_CTX_free(sslCtx)


execute("pause")

最新评论

user898 发表于 2018-3-4 18:01:19
系统自带的 http和whttp模块,不能访问https资源吗?如果能访问,你这个应该算是其他途径了

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-4-27 07:08 , Processed in 0.046875 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表