0

GroovyスクリプトでHtmlUnitを使用して、www.goodreads.comサイトからcsvファイルを取得しています。このスクリプトは最近まで機能していましたが、奇妙なSSLエラーが発生していました。

これが使用されているGroovyコードです

    WebClient client = new WebClient(com.gargoylesoftware.htmlunit.BrowserVersion.INTERNET_EXPLORER_6);
    client.setJavaScriptEnabled(false);
    HtmlPage signIn = client.getPage("http://www.goodreads.com/user/sign_in");
    HtmlForm signInForm = signIn.getFormByName("sign_in")
    signInForm.getInputByName("user[email]").setValueAttribute(username);
    signInForm.getInputByName("user[password]").setValueAttribute(password);
    println "I'm gonna click it !"
    HtmlPage signedIn = signInForm.getInputByName("next").click()

そして、関連する@Grab

@Grab(group='net.sourceforge.htmlunit', module='htmlunit', version='2.8')

このコードが実行されるたびに、私は持っています

INFO: Bad input type: "email", creating a text input
I'm gonna click it !
Caught: java.lang.RuntimeException: java.net.SocketException: java.security.NoSuchAlgorithmException:
 Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
    at Goodreads.getCSV(goodreads.groovy:184)
    at Goodreads.run(goodreads.groovy:38)
    at Goodreads.main(goodreads.groovy:215)

184行目signInForm.getInputByName("next").click()は、エラーが発生したと思われる場所の1つです。たぶんそれはgoodreadsのSSL実装の選択と関係があります。

Opera、Firefoxを使用してそのサイトに正しくログインできることを考えると、そのエラーはどのように表示されますか?そして、もっと重要なのは、それを修正するために何ができるでしょうか?

さらに、通知フォームの宛先はurlhttps ://www.goodreads.com/user/sign_inです。

このURLを開くと、OperaがTLS v1.0 256ビットAES(1024ビットDHE_RSA / SHA)として示すページにアクセスできます。

4

1 に答える 1

0

ああ、そのトリックを知りませんでした。

少しグーグルすると、そのような場合、電話をかけることWebClient#setUseInsecureSSL(true)が正しい解決策であることがわかりました。でも理由はわかりません...

于 2010-08-25T15:47:53.810 に答える