2012-12-07 2 views
2

웹 사이트에 로그인하려고합니다. cURL을 사용하여이 웹 사이트에서 많은 답변을 읽었지만 여전히 얻을 수 없습니다. 누군가가 게시하기 전에 나를cURL을 사용하여 웹 사이트에 로그인하는 PHP

$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; 
+0

는 질문에도 노력을 시작하기에 너무 작은 등등 코드, 오류,'curl_info' 덤프를 붙여 넣습니다. – soulseekah

+0

이것이 작동합니다. http://stackoverflow.com/questions/8872071/php-curl-seems-to-be-ignoring-cookie-jar-file – user1527484

답변

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 해시를 추출하고 함께 제출해야합니다. 가끔 c4 CAPTCHA 필드도 있습니다.

나는 많은 고뇌없이이 작업을 수행 할 수 있었다 :

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 
+0

양식 정보가 누락 되었습니까? 그렇다면 PHP에서 가지고있는 것을 어떻게 구현할 수 있습니까? –

+0

당신은 정말로 있습니다; 나는 당신의 질문에 당신이 왜 효과가 없는지에 대해서 대답했습니다. 위의 정보를 바탕으로 모든 양식 필드를 제공하고'FormState' 권한을 얻으십시오 (예 :'GET'에서 먼저 추출하고'SimpleXML'을 사용하십시오). – soulseekah

관련 문제