關於SSL無法自動登入露天

问题描述

大家好,最近有一個作業是要用httpclient來登入露天,程式到client.executeMethod(authget);就會出錯並出現Exception:Theservermember.ruten.com.twfailedtorespondwithavalidHTTPresponse查過封包發現,SSL到ApplicationData後就會出現Encryptedalertmessage,TCP就會斷開,目前都沒有想法,去估狗爬文,都只找到一些類似的解法,要請各位高手幫忙,感謝~(以下的code用於facebook可ApplicationData正常,不會送出Encryptedalertmessage)附上code:main.javaimportjava.security.cert.CertPathValidatorException;importorg.apache.commons.httpclient.*;importorg.apache.commons.httpclient.cookie.CookiePolicy;importorg.apache.commons.httpclient.cookie.CookieSpec;importorg.apache.commons.httpclient.methods.*;importorg.apache.commons.httpclient.params.HttpMethodParams;importorg.apache.commons.httpclient.protocol.Protocol;publicclassLoginruten{staticfinalStringLOGON_SITE="member.ruten.com.tw";staticfinalintLOGON_PORT=443;publicLoginruten(){super();}publicstaticvoidmain(String[]args)throwsException{Protocolmyhttps=newProtocol("https",newMySecureProtocolSocketFactory(),43);Protocol.registerProtocol("https",myhttps);HttpClientclient=newHttpClient();client.getHostConfiguration().setHost(LOGON_SITE,LOGON_PORT,myhttps);System.setProperty("apache.commons.httpclient.cookiespec","COMPATIBILITY");GetMethodauthget=newGetMethod("/user/login.php");try{client.executeMethod(authget);}catch(Exceptionx){System.out.printlnFight;}Header[]head=authget.getResponseHeaders();Header[]foot=authget.getResponseFooters();System.out.println("Loginformget:"+authget.getStatusLine().toString());authget.releaseConnection();CookieSpeccookiespec=CookiePolicy.getDefaultSpec();Cookie[]initcookies=cookiespec.match(LOGON_SITE,LOGON_PORT,"/",false,client.getState().getCookies());System.out.println("Initialsetofcookies:");if(initcookies.length==0){System.out.println("None");}else{for(inti=0;i<initcookies.length;i++){System.out.println("-"+initcookies[i].toString());}}client.getState().addCookies(initcookies);PostMethodauthpost=newPostMethod("/login.php?login_attempt=1");//PrepareloginparametersNameValuePaircharset_test=newNameValuePair("charset_test","&f");NameValuePairversion=newNameValuePair("version","1.0");NameValuePairreturn_session=newNameValuePair("return_session","0");NameValuePairpass=newNameValuePair("pass","tiantian");NameValuePairemail=newNameValuePair("email","rlby@tom.com");NameValuePairpersistent=newNameValuePair("persistent","1");authpost.setRequestBody(newNameValuePair[]{charset_test,version,return_session,pass,email,persistent});client.executeMethod(authpost);System.out.print(authpost.getResponseBodyAsString());System.out.println("Loginformpost:"+authpost.getStatusLine().toString());authpost.releaseConnection();Cookie[]logoncookies=cookiespec.match(LOGON_SITE,LOGON_PORT,"/",false,client.getState().getCookies());System.out.println("Logoncookies:");if(logoncookies.length==0){System.out.println("None");}else{for(inti=0;i<logoncookies.length;i++){System.out.println("-"+logoncookies[i].toString());}}intstatuscode=authpost.getStatusCode();if((statuscode==HttpStatus.SC_MOVED_TEMPORARILY)||(statuscode==HttpStatus.SC_MOVED_PERMANENTLY)||(statuscode==HttpStatus.SC_SEE_OTHER)||(statuscode==HttpStatus.SC_TEMPORARY_REDIRECT)){Headerheader=authpost.getResponseHeader("location");if(header!=null){Stringnewuri=header.getValue();if((newuri==null)||(newuri.equals(""))){newuri="/";}System.out.println("Redirecttarget:"+newuri);GetMethodredirect=newGetMethod(newuri);client.executeMethod(redirect);System.out.println("Redirect:"+redirect.getStatusLine().toString());redirect.releaseConnection();}else{System.out.println("Invalidredirect");System.exit(1);}}else{System.out.println("error");System.exit(1);}}}2.MySecureProtocolSocketFactory.java:importjava.io.IOException;importjava.net.InetAddress;importjava.net.InetSocketAddress;importjava.net.Socket;importjava.net.SocketAddress;importjava.net.UnknownHostException;importjava.security.KeyManagementException;importjava.security.NoSuchAlgorithmException;importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;importjavax.net.SocketFactory;importjavax.net.ssl.SSLContext;importjavax.net.ssl.TrustManager;importjavax.net.ssl.X509TrustManager;importorg.apache.commons.httpclient.ConnectTimeoutException;importorg.apache.commons.httpclient.params.HttpConnectionParams;importorg.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;publicclassMySecureProtocolSocketFactoryimplementsSecureProtocolSocketFactory{static{System.out.println("SSL:");}privateSSLContextsslcontext=null;privateSSLContextcreateSSLContext(){SSLContextsslcontext=null;try{sslcontext=SSLContext.getInstance("SSL");sslcontext.init(null,newTrustManager[]{newTrustAnyTrustManager()},newjava.security.SecureRandom());}catch(NoSuchAlgorithmExceptione){e.printStackTrace();}catch(KeyManagementExceptione){e.printStackTrace();}returnsslcontext;}privateSSLContextgetSSLContext(){if(this.sslcontext==null){this.sslcontext=createSSLContext();}returnthis.sslcontext;}publicSocketcreateSocket(Socketsocket,Stringhost,intport,booleanautoClose)throwsIOException,UnknownHostException{returngetSSLContext().getSocketFactory().createSocket(socket,host,port,autoClose);}publicSocketcreateSocket(Stringhost,intport)throwsIOException,UnknownHostException{returngetSSLContext().getSocketFactory().createSocket(host,port);}publicSocketcreateSocket(Stringhost,intport,InetAddressclientHost,intclientPort)throwsIOException,UnknownHostException{returngetSSLContext().getSocketFactory().createSocket(host,port,clientHost,clientPort);}publicSocketcreateSocket(Stringhost,intport,InetAddresslocalAddress,intlocalPort,HttpConnectionParamsparams)throwsIOException,UnknownHostException,ConnectTimeoutException{if(params==null){thrownewIllegalArgumentException("Parametersmaynotbenull");}inttimeout=params.getConnectionTimeout();SocketFactorysocketfactory=getSSLContext().getSocketFactory();if(timeout==0){returnsocketfactory.createSocket(host,port,localAddress,localPort);}else{Socketsocket=socketfactory.createSocket();SocketAddresslocaladdr=newInetSocketAddress(localAddress,localPort);SocketAddressremoteaddr=newInetSocketAddress(host,port);socket.bind(localaddr);socket.connect(remoteaddr,timeout);returnsocket;}}privatestaticclassTrustAnyTrustManagerimplementsX509TrustManager{publicvoidcheckClientTrusted(X509Certificate[]chain,StringauthType)throwsCertificateException{}publicvoidcheckServerTrusted(X509Certificate[]chain,StringauthType)throwsCertificateException{}publicX509Certificate[]getAcceptedIssuers(){returnnewX509Certificate[]{};}}}

解决方案

解决方案二:
没做过这方面的,帮顶啦。祝楼主好运...
解决方案三:
百度上查查吧,贴上错误搜索

时间: 2024-09-18 21:41:46

關於SSL無法自動登入露天的相关文章

fedora-Fedora DHCP 無法啟動!!!!!

问题描述 Fedora DHCP 無法啟動!!!!! 出現下面的錯誤訊息: Not configured to listen on any interfaces! No subnet declaration for restart (no IPv4 addresses). ** Ignoring requests on restart. If this is not what you want, please write a subnet declaration in your dhcpd.co

virtualbox-VirtualBox 在 Fedora 16 下無法啟動

问题描述 VirtualBox 在 Fedora 16 下無法啟動 錯誤內容: 解决方案 参考 VirtualBox Kernel driver not installed (rc=-1908) after kernel upgrade 为内核安装特定的内核模块包 首先查询内核版本 $ uname -r 然后安装相应的kmod-VirtualBox-* 包: $ yum search kmod-VirtualBox 最后运行 $ /etc/sysconfig/modules/VirtualBox

關於運行提示問題

问题描述 運行就提示:試圖運行項目時出錯:無法啓動調試.綁定句柄無效?????????xiexienaweizhijiao... 解决方案 解决方案二:来自http://blog.csdn.net/greystar/archive/2006/08/28/1130941.aspx解决方法:1.开启TerminalServices服务.允许用户以交互方式连接到远程计算机.远程桌面.快速用户切换.远程协助和终端服务器依赖此服务-停止或禁用此服务会使您的计算机变得不可靠.要阻止远程使用此计算机,请在"系

rails資料庫長時間查詢,導致無法接受request?

问题描述 今天在寫報表產生功能的時候發現 報表產生中的這段時間rails server無法繼續接受request我開了另一個瀏覽器 卻無法request到網頁一定要等到報表產生完後 才可以進入網頁!即使關掉瀏覽器也一樣得等資料庫比對查詢完才行自己推斷可能是下面這個原因..之前資料庫資料較少 我沒有遇過這個問題由於 rails處理client的request是單線程的處理完才能接受下一個request當資料庫需大筆比對查詢大料資料的時候 (假設要花十分鐘!)rails的server無法接受另一個r

[three.js] 解決貼圖無法重複的問題 Solving with Texture RepeatWrapping Fail Issue

有些东西,你想找的时侯,怎么也找不到, 而有些东西,不经意间,随处可见: 本以为这是生活中常见的事情, 然而在浩瀚的互联大海中,也是如此. 平时的积累是为了一时之需, 几分钟的投入, 积累起来, 也会成为汪洋大海, 载起一帆小舟, 不至搁浅. 平时注一入滴水, 需时拥有太平洋, 广告词很好, 然而它真正的意义又有几人能真正领悟呢! 附一个不错的 threejs 开源链接: https://github.com/rmx/threejs-collada [three.js] 解決貼圖無法重複的問題

一個關於51單片機涉及交通燈的匯編程序以及他的PROTUES仿真圖

问题描述 一個關於51單片機涉及交通燈的匯編程序以及他的PROTUES仿真圖 采用51单片机作为系统的MCU,基本完成控制两组交通指示灯交替亮 每个街口有左拐.直行及行人三种指示灯.直行灯每个灯有红.黄.绿三种颜色.自行车与汽车共用左拐和直行灯. 首先东西向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒(同时南北向红灯亮95秒),然后东西向红灯亮95秒钟(同时首先南北向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒),然后东西向的绿灯亮,依次类推. 每次绿灯亮的时候,对应的行人灯亮.

關於安裝.net 4.0的錯誤

问题描述 嘗試了各種辦法,重裝系統,卸載所有的.net版本從1.0開始裝,可是裝到4.0時還是報錯.系統是xp系統,也嘗試了百度上說的netstop方法安裝失敗:.NETFramework4未完成安裝,因為:系統無法開啟指定的裝置或檔案 解决方案 解决方案二:如果重装系统,你需要一个完全版的系统,不要再用ghost版了解决方案三:ghost版很多都是阉割过的很多功能都缺失了解决方案四:你就重装win7吧,不要ghost解决方案五:引用2楼Z65443344的回复: ghost版很多都是阉割过的很

相應頭-提交表單后服務器接收到了數據 但瀏覽器無法顯示網頁

问题描述 提交表單后服務器接收到了數據 但瀏覽器無法顯示網頁 錯誤提示:No response headers received because request failed ERROR_INTERNET_CONNECTION_RESET 我上傳的是個pdf文件,把pdf已經轉換為圖片格式. 有的文件上傳后可以顯示出來 但有的文件上傳后就無法打開網頁 同樣的代碼. 用監視工具可以看到服務器確實接收到了提交的數據 但就是沒有返回相應頭 .換另一個文件就是ok的

ns2-NS2安裝過後運行出現問題,無法顯示nam

问题描述 NS2安裝過後運行出現問題,無法顯示nam apple@acer:/media/apple/others/ZYJNS/ns-allinone-2.35/ns-2.35/tcl/ex$ ns % nam Can't find a usable init.tcl in the following directories: :/media/apple/others/ZYJNS/ns-allinone-2.35/tcl8.5.10/library /media/apple/??????/ZYJ