通过RCurl发布表单时避免服务器证书错误

时间:2013-04-09 11:08:24

标签: r post curl web-scraping rcurl

尝试通过RCurl::postForm()发布表单时,我收到此证书验证错误:

Error in function (type, msg, asError = TRUE)  : 
  SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

还不熟悉POST表格,有谁能告诉我我做错了什么?

产生错误的示例

我查看了http://goo.gl/qOf5t的源代码,并确定了列出的第一个航班的POST表格(截至2013-04-09这是FFM - NY为437,97€):

<form data-carrier='["AF"]' method="post" target="_blank" action=
"https://www.fluege.de/flight/itinerary/sFlightInput/bd253d844ad40c38e2334930a849da76/SAB"
class="clearfix itinForm">
  <input type="hidden" name="key" value="2" /> <input type="hidden" name="recom"
  value="2" /> <input type="hidden" name="type" value="SAB" />

  <div class="relative clearfix">
    <div class="Pricebox PriceboxWO">
      <div class="spiffy spiffytop schemeh1">
        <div class="spiffy1">
          &nbsp;
        </div>

        <div class="spiffy2">
          &nbsp;
        </div>

        <div class="spiffy3">
          &nbsp;
        </div>

        <div class="spiffy4">
          &nbsp;
        </div>
      </div>

      <div class="PriceItin floatfix">
        <div class="fll">
          Preis p. P.&nbsp;:&nbsp;
        </div>
      </div>
    </div>
  </div>
</form>

然后我解雇了这个:

require("RCurl")
x <- RCurl::postForm(
    uri="https://www.fluege.de/flight/itinerary/sFlightInput/bd253d844ad40c38e2334930a849da76/SAB",
    .params=list(
        key=160,
        recom=160,
        type="SAB"
    ),
    style="POST"
)

2 个答案:

答案 0 :(得分:3)

从我在其他地方读到的,问题似乎是RCurl不再包含任何CA信息。

查看以下网址。您可能需要从某处获取CA信息并在本地安装。

http://curl.haxx.se/docs/sslcerts.html

使用getURL,您可以设置一个参数来忽略证书,但我还没有找到一种方法来使用postForm。

答案 1 :(得分:1)

来自RCurl常见问题http://www.omegahat.org/RCurl/FAQ.html

  

为什么https对我不起作用?

     

可能是因为当您编译/安装libcurl时,您没有   支持SSL。您可以使用该命令进行检查   curl-config --feature   如果ssl没有出现在那里,你就没有它的支持。您应首先安装SSL(例如openssl)重新安装curl。