cURL -服务器突然响应状态码500 -为什么


cURL - Server suddenly responds with Status Code 500 - Why?

我正在尝试使用cURL从我的网站读取一些数据。为了做到这一点,我每分钟向我的服务器运行大约50-60个请求。在大约30个请求时,脚本似乎停止了工作,但我发现我突然从我的curl请求中得到一个状态码500。

这个例程没有什么特别的,它增加一个月的实际天数,直到它达到月底。每天我都会读一些东西(不是这段代码的一部分)。

下面的代码显示了我如何发出cURL请求。在30个请求后,它向我发送了500个请求,但是当我在没有循环的情况下再次尝试时,只收到31个请求,它很好,所以它只对我的大量请求不起作用。

你知道问题在哪里吗?

谢谢!

            // To get an ASP.NET SessionID I first visit the page as usual...
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, "http://www.mypage.de/mysite.aspx");
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($c, CURLOPT_COOKIEFILE, "cookies.txt");
    curl_setopt($c, CURLOPT_COOKIEJAR, "cookies.txt");
    $o = curl_exec($c);
    curl_close($c);
    //start the request
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, "http://www.mypage.de/mysite.aspx");
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($c, CURLOPT_COOKIEFILE, "cookies.txt");
    curl_setopt($c, CURLOPT_COOKIEJAR, "cookies.txt");
    curl_setopt($c, CURLOPT_HTTPHEADER, array('Content-Length' => '999'));
    curl_setopt($c, CURLOPT_POST, true);
    curl_setopt($c, CURLOPT_HEADER, 1);

    $headers = array();
    //$headers[] = "Referer: http://www.mypage.de/mysite.aspx";
    //$headers[] = "Content-Length: 999";
    $data = "somevalidpostdata";
    curl_setopt($c, CURLOPT_POSTFIELDS, $data);
    $o = curl_exec($c);
    $status = curl_getinfo($c, CURLINFO_HTTP_CODE);
    echo "'r'n" . $status . "'r'n";
    curl_close($c);

谢谢,WorldSignia

500表示内部服务器错误

也许你发送请求的速度太快了。尝试在请求之间添加usleep(500000);

HTTP500表示服务器在处理请求时出了问题。您需要查看http://www.mypage.de/mysite.aspx上的错误。是否有可以检查的消息或有效负载属性?它可能包含应用程序抛出的错误。

这是不清楚我如果你控制的应用程序,你的脚本连接?如果没有,而且您只是抓取一个页面,那么您应该在每个请求之前引入几秒钟的睡眠,否则威胁管理网关应用程序将阻止您的脚本(因为它基本上是拒绝服务攻击)。此外,您应该检查并尊重目标网站上Robots.txt的存在。