如何使用 PHP curl(或其他)登录 Discogs.com?

How to login on Discogs.com using PHP curl (or other)?

我正在尝试使用 PHP 脚本和 cURL 登录网站 http://www.discogs.com

我需要它来从 https://www.discogs.com/sell/mywants?ev=wsim 中获取数据 - 这是一个报价列表,其中的项目已添加到需求列表中。根据我的发现,此列表在 API 中不可用。

我在使用标准 cURL 请求登录时遇到问题。这是我的代码:

$username = 'myuser';
$password = 'mypassword';
$loginUrl = 'https://www.discogs.com/login';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username='.urlencode($username).'&password='.urlencode($password));
curl_setopt($ch, CURLOPT_COOKIEJAR, 'c:\cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'c:\tmp.txt'); 
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36');
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);

if (curl_error($ch)) {
    echo curl_error($ch);
    return;
} else {
    echo "OK";
}

curl_setopt($ch, CURLOPT_URL, 'https://www.discogs.com/sell/mywants?ev=wsim');
$content = curl_exec($ch);

echo $content;

curl_close($ch);

因此,我得到的是登录页面,而不是列出优惠的页面。

你能告诉我我做错了什么吗?

根据我的测试,登录页面需要发布另一个字段,即 Action.Login 以使登录请求有效。

curl_setopt($ch, CURLOPT_POSTFIELDS, 'username='.urlencode($username).'&password='.urlencode($password).'&Action.Login=');

希望对您有所帮助。