如何在LeagueOfLegends.com/board上进行php cURL登录,验证码和会话?

时间:2013-12-10 19:31:47

标签: php curl scrape

我正在玩试图学习php,并决定编写一个可以从联盟新闻板上获取信息的php页面。我遇到的问题是该网站需要我先登录。我试过了

$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://forums.euw.leagueoflegends.com/board');
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.6 (KHTML, like Gecko) Chrome/16.0.897.0 Safari/535.6'); 
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_REFERER, "http://leagueoflegends.com");
    $html = curl_exec($ch);
    curl_close($ch);
    echo $html;

我试过

file_get_contents('http://forums.euw.leagueoflegends.com/board/')

但每次我都无处可去。我希望登录另一个选项卡可以让我在论坛上获取页面的来源,但似乎并非如此。老实说,我甚至不知道从这里去哪里或者我应该寻找什么来给我一个线索。通常我喜欢发布更多信息,但就像我说我正在尝试学习PHP;我似乎只是跳进来学到最好的东西。

1 个答案:

答案 0 :(得分:3)

首先,祝你学习PHP的好运! Curl强大,但最近我一直在使用Guzzle(guzzlephp.org),因为它易于使用。

大多数具有登录机制的网站实际上都会使用会话或cookie来映射用户,以便您走在正确的道路上。您上面的内容只是检索主板页面。从这里,您将提交第二个curl请求登录。登录页面有:

https://account.leagueoflegends.com/login

它实际上会弹出一个模态窗口并使用验证码。您将提交以下表单字段:

username
password
recaptcha_response_field

至:https://account.leagueoflegends.com/auth

由于这有验证码,您最好的选择可能是自己登录并导出此域的Cookie数据,看看您是否可以在脚本中重复使用它。它会在某个时候到期,因此不会完全自动化。