我正在玩试图学习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;我似乎只是跳进来学到最好的东西。
答案 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数据,看看您是否可以在脚本中重复使用它。它会在某个时候到期,因此不会完全自动化。