【问题标题】:curl gives 403 error?curl给出403错误?
【发布时间】:2010-09-17 12:45:42
【问题描述】:

我正在尝试从 MediaWiki 登录页面为我的 phpBB 论坛设置 cookie。在成功登录 wiki 后使用钩子,我想运行一个设置 cookie 的 php 脚本。

脚本在我独立运行或使用 GET 时有效,但出于安全原因,我想 POST 到脚本。为此,我认为curl 将是最佳选择。

不幸的是,即使是这样的基本脚本:

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/ForumLogin.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);

给我一​​个 403 禁止错误。 robots.txt 中没有应该干扰的规则。我还能尝试什么让脚本正常工作,或者有什么其他方法可以在 MediaWiki 中运行脚本?

【问题讨论】:

标签: php curl phpbb mediawiki-extensions


【解决方案1】:

对于我的具体项目,如果发生错误,服务器会抛出 403 错误,但仍然返回数据。所以为了解决这个问题,我这样做了:

curl_setopt($ch, CURLOPT_FAILONERROR, 0); // Fail on errors

如果您禁用错误时失败,您可能仍会返回一些数据。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我怀疑这样做的理由是明确阻止自动化行为 - 一种反机器人或一般安全措施。您可能希望查看目标站点的源代码并检查任何此类措施 - 快速搜索“403”的代码可能会提供一些见解。甚至在这种情况下 POST 请求可能是不合法的 - 因此出于安全原因而被阻止。

    顺便说一下,我不确定您所说的“出于安全原因”是什么意思。 POST 并不比 GET 更安全。他们都接受同样多的审查。

    【讨论】:

    • 目的地是大约20条规则的手写页面。我还没有发送 POST,即使问题中的基本脚本也被接收脚本拒绝。另外,因为我必须将用户名和密码从一个脚本发送到另一个脚本,所以我认为我不应该在 url 的查询字符串中这样做。我错了吗?
    • 你检查过服务器配置吗?其他页面呢?关于另一个问题:POST 不再安全。您需要 SSL 来保证信息在传输过程中的机密性。
    • 好吧,我意识到当使用 curl GET 和 POST 时没有区别,但我选择 curl 因为我不想在 url 中使用 GET。这不太安全,因为它会保存您的用户名并在浏览器历史记录中作为查询字符串传递。无论如何,这不是问题。我应该在服务器配置中检查什么?
    • 这取决于服务器。任何与访问权限相关的事情真的......我还建议通过制作类似的请求来测试 cURL 是否按预期工作。到另一个文件(如果你还没有)。您需要排除尽可能多的变量/技术以缩小选项范围(您可能会获得 403 的一百万个原因,这有点像说您获得了访问受保护内存的 BSOD)。 ......不,它同样安全。相信我。让它变得模糊并不会使它更安全。安全的主要规则。
    • 呸,这会很糟糕 :P 感谢您的建议,今天我放弃时可能会在某个地方接受您的回答。
    【解决方案3】:

    我的解决方案是设置 User Agent 选项,以便 cURL 可以伪装成浏览器。在 php 中设置的一个示例是

    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6');
    

    参考资料:

    【讨论】:

      【解决方案4】:

      像真正的尝试“curl/7.39.0”用户代理一样行动/请求

      $useragent= "curl/7.39.0";
      curl_setopt($ch,CURLOPT_USERAGENT, $useragent);
      

      或从浏览器数组列表中尝试随机用户代理,例如

      //browser pack start
               $useragents=array(
            "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4",
            "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4",
            "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
            "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
            "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
            "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
            "Mozilla/5.0 (iPad; CPU OS 4_3_5 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8L1 Safari/6533.18.5",
            "Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true",
            "Mozilla/5.0 (Linux; U; en-us; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true",
            "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.141.16-Gen4_11004310) AppleWebkit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true",
            "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Nexus S Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
            "Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36",
            "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
            "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+",
            "Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36",
            "Mozilla/5.0 (Linux; U; Android 2.3; en-us; SAMSUNG-SGH-I717 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
            "Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
            "Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
            "Mozilla/5.0 (Linux; Android 4.2.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36",
            "Mozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
      
      
               "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36");
                  //browser pack end
        $useragent=$useragents[rand()%sizeof($useragents)];
           curl_setopt($ch,CURLOPT_USERAGENT, $useragent);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-01
        • 2011-12-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-17
        • 2014-02-17
        • 2013-08-29
        • 1970-01-01
        相关资源
        最近更新 更多