我在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()
中的一行,我认为错误发生了。也许它与goodreads SSL选择的实现有关,这是
考虑到我可以使用Opera,Firefox正确登录该网站,该错误是如何出现的?而且,更重要的是,我该怎么做才能解决它?
Additionnaly notice表单目的地是网址https://www.goodreads.com/user/sign_in
打开此网址可以访问Opera指示为TLS v1.0 256位AES(1024位DHE_RSA / SHA)的页面
答案 0 :(得分:0)
有点谷歌搜索表明,在这种情况下,调用WebClient#setUseInsecureSSL(true)
是一个正确的解决方案。但我不知道为什么......