Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   почему через сокеты я получаю куки, а через curl нет? (https://forum.antichat.xyz/showthread.php?t=122001)

Дикс 23.05.2009 22:29

почему через сокеты я получаю куки, а через curl нет?
 
отправляю запрос курлом:

PHP код:

        $options = array(
      
CURLOPT_VERBOSE => 1,
      
CURLOPT_POST => 1// method POST
      
CURLOPT_HEADER => 1// show headers
      
CURLOPT_NOBODY => 0// disable body
      
CURLOPT_POSTFIELDS => array(
        
'mode' => 'login',
        
'chal' => 'c0:1216468800:2495:300:E7hQqy7D7SSujymYaT2h:b38844ffa11fdf08d87fc4812788a686',
        
'response' => '',
        
'user' => 'user',
        
'password' => 'pass',
        
'_submit' => 'Login',
        
'remember_me' => 1

      
), // post data
      
CURLOPT_FOLLOWLOCATION => 1,
      
CURLOPT_RETURNTRANSFER => 1// return response
      
CURLOPT_SSL_VERIFYPEER => 0// verify ssl sertificat
      
CURLOPT_USERAGENT => 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; MRA 4.9 (build 01863))',
      
CURLOPT_TIMEOUT => 30
      
);

      
$process curl_init('www.site.ru');
      
curl_setopt_array($process$options);
      
$return curl_exec($process);
      
curl_close($process); 

получаю:

Цитата:

HTTP/1.0 200 OK
Date: Sat, 23 May 2009 18:20:08 GMT
Server: Apache
Set-Cookie: ljuniq=pQGivU2aBITGvBS:1243102808:pgstats0:m0; expires=Wednesday, 22-Jul-2009 18:20:08 GMT; domain=.livejournal.com; path=/
Cache-Control: private, proxy-revalidate
Pragma: no-cache
ETag: "8e941582721e88255b1cfe10285253f4"
Content-length: 18537
Keep-Alive: timeout=30, max=100
Connection: keep-alive
Content-Type: text/html; charset=utf-8
Content-Language: en
Expires: Sat, 23 May 2009 18:20:08 GMT
всего ОДНА кука.

А если отправить через сокеты:

PHP код:

   $content  "mode=login&chal=c0:1216468800:2495:300:E7hQqy7D7SSujymYaT2h:b38844ffa11fdf08d87fc4812788a686&response=&";
    
$content .= "user=user&password=pass&_submit=Login&remember_me=1";

    
$req  "POST /login.bml?ret=1 HTTP/1.0\r\n";
    
$req .= "Accept: */*\r\n";
    
$req .= "Content-Type: application/x-www-form-urlencoded\r\n";
    
$req .= "Proxy-Connection: Keep-Alive\r\n";
    
$req .= "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; MRA 4.9 (build 01863))\r\n";
    
$req .= "Host: www.livejournal.com\r\n";
    
$req .= "Content-Length: ".strlen($content)."\r\n";
    
$req .= "Pragma: no-cache\r\n\r\n";
    
$req .= $content;

    
$sock fsockopen("www.livejournal.com"80,  $errno$errstr30); 

получаю:

Цитата:

HTTP/1.0 302 Found
Date: Sat, 23 May 2009 18:21:51 GMT
Server: Apache
Set-Cookie: ljuniq=nijPK3Xw7vMs8Dw:1243102911:pgstats0:m0; expires=Wednesday, 22-Jul-2009 18:21:51 GMT; domain=.livejournal.com; path=/
Set-Cookie: ljmastersession=v1:u19098670:s8:aEPBJHNrnvY//Thanks+for+signing+in+/+LiveJournal+loves+you+a+lot+/+Here+have+a+cookie; expires=Wednesday, 22-Jul-2009 18:21:51 GMT; domain=www.livejournal.com; path=/; HttpOnly
Set-Cookie: ljloggedin=u19098670:s8; expires=Wednesday, 22-Jul-2009 18:21:51 GMT; domain=livejournal.com; path=/; HttpOnly
Set-Cookie: ljloggedin=u19098670:s8; expires=Wednesday, 22-Jul-2009 18:21:51 GMT; domain=.livejournal.com; path=/; HttpOnly
Set-Cookie: BMLschemepref=horizon; expires=Wednesday, 22-Jul-2009 18:21:51 GMT; domain=livejournal.com; path=/; HttpOnly
Set-Cookie: BMLschemepref=horizon; expires=Wednesday, 22-Jul-2009 18:21:51 GMT; domain=.livejournal.com; path=/; HttpOnly
Set-Cookie: langpref=ru/1243102911; expires=Wednesday, 22-Jul-2009 18:21:51 GMT; domain=livejournal.com; path=/; HttpOnly
Set-Cookie: langpref=ru/1243102911; expires=Wednesday, 22-Jul-2009 18:21:51 GMT; domain=.livejournal.com; path=/; HttpOnly
Set-Cookie: ljsession=v1:u19098670:s8:t1243101600:g6f5817c274a 95201caedc323f200c8af30ada182//Thanks+for+signing+in+/+LiveJournal+loves+you+a+lot+/+Here+have+a+cookie; expires=Wednesday, 22-Jul-2009 18:21:51 GMT; domain=livejournal.com; path=/; HttpOnly
Set-Cookie: ljsession=v1:u19098670:s8:t1243101600:g6f5817c274a 95201caedc323f200c8af30ada182//Thanks+for+signing+in+/+LiveJournal+loves+you+a+lot+/+Here+have+a+cookie; expires=Wednesday, 22-Jul-2009 18:21:51 GMT; domain=.livejournal.com; path=/; HttpOnly
Location: http://www.livejournal.com/
Connection: close
Content-Type: text/html; charset=iso-8859-1

при этом CURLOPT_FOLLOWLOCATION вообще ничего не решает. ответы сервера разные, сокетам он говорит "document moved here", а курлу - "username not found"

Дикс 23.05.2009 22:37

хотя щас выяснилось что если передать не
PHP код:

      CURLOPT_POSTFIELDS => array(
        
"mode" => "login",
        
"chal" => "c0:1216468800:2495:300:E7hQqy7D7SSujymYaT2h:b38844ffa11fdf08d87fc4812788a686",
        
"response" => "",
        
"user" => {$user},
        
"password" => {$password},
        
"_submit" => "Login",
        
"remember_me" => "1",

      ), 

а

PHP код:

CURLOPT_POSTFIELDS => "mode=login&chal=c0:1216468800:2495:300:E7hQqy7D7SSujymYaT2h:b38844ffa11fdf08d87fc4812788a686&response=&user={$user}&password={$password}&_submit=Login&remember_me=1"

ответ у курла, такой же как и у сокетов..

Дикс 23.05.2009 23:14

тема неактуальна

GreenBear 23.05.2009 23:22

Цитата:

"user" => {$user},
"password" => {$password},
wth?

Doom123 24.05.2009 18:23

Если кому нибудь интересен ответ то вот
https://forum.antichat.ru/showpost.php?p=1222758&postcount=2

Дикс 25.05.2009 11:17

эээ
а как у меня в другом скрипте работает-то с массивом пост-полей??
сначала юзал curl_set_opt(), потом увидел подсказку что можно всё массивом скинуть
а теперь оказывается что массив туда нельзя =\

Дикс 25.05.2009 11:17

Цитата:

Все дело в том, в каком виде передается этот пост. Если передавать курлу массив, то передача кодируется, как multipart/form-data. А при строке - application/x-www-form-urlencoded.
точно, спасибо


Время: 04:05