2

cURL を使用して Web サイトにログインしようとしています この Web サイトで多くの回答を読みましたが、まだ取得できません。誰かが解決策を見つけるのを手伝ってくれませんか

$url = 'https://secure.chess.com/login';

$postfields = "c1=USERNAME&loginpassword=PASSWORD&rememberme=";

$cookie = "cookie.txt";


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
$response = curl_exec($ch);

echo $response;
4

1 に答える 1

1

多くの投稿変数が欠落しているようです。その中には、投稿する前にフェッチする必要がある重要な状態ハッシュがあります。

c1:USERNAME
loginpassword:PASSWORD
Qform__FormControl:btnLogin
Qform__FormEvent:QClickEvent
Qform__FormParameter:
Qform__FormCallType:Server
Qform__FormUpdates:
Qform__FormCheckableControls:rememberme
Qform__FormState:9661e98ced2596072a3ca5d70cd57ff5
Qform__FormId:LoginForm

正しくQform_FormStateない場合、エラー メッセージはまったく表示されず、混乱を招きます。最初にページを取得し、HTML からハッシュを取り出してQform_FormState送信する必要があります。たまにc4CAPTCHAフィールドもあります。

私は大した苦労もなくこれを行うことができました:

curl https://secure.chess.com/login -v | grep -Po '(?<=Qform__FormState" value=").*(?=")'
# 9b6b7d849c1d4fa16ed25b7b886cf88b
# note Set-Cookie: PHPSESSID=vvtk4stb22e34ac7jhg7m6i142; path=/; domain=.chess.com

curl \
    --header "Cookie: PHPSESSID=vvtk4stb22e34ac7jhg7m6i142" \
    --data="c1=USERNAME&loginpassword=PASSWORD... *snip* ...&Qform__FormState=9b6b7d849c1d4fa16ed25b7b886cf88b ..." \
    https://secure.chess.com/login -v
于 2012-12-07T08:25:31.347 に答える