WapStyle » 2010.10.09 19:45

Вот что мне пишет CURL

Warning: curl_setopt(): You must pass either an object or an array with the CURLOPT_HTTPHEADER, CURLOPT_QUOTE, CURLOPT_HTTP200ALIASES and CURLOPT_POSTQUOTE arguments ...

Мне нужно послать на сайт cookies методом POST c с передачей нескольких http заголовков.

Gemorroj » 2010.10.09 19:56

код может таки стоит написать?

WapStyle » 2010.10.09 20:00

Код:

1
2
3
4
5
6
7
8
9
10
$header2 = 'Cookie: remixsid='.$remixsid.';remixmid='.ID.'; remixemail='.urlencode(EMAIL).'; remixpass='.md5(PASS);
 
$curl2 = curl_init();
curl_setopt($curl2, CURLOPT_URL, $url);
curl_setopt($curl2, CURLOPT_HTTPHEADER, $header2);
//curl_setopt($curl2, CURLOPT_HEADER, true);
curl_setopt($curl2, CURLOPT_POST, true);
curl_setopt($curl2, CURLOPT_TIMEOUT, 12);
$data = curl_exec($curl2);
curl_close($curl2);

Я плохо знаю curl этот код может быть неверным.

Gemorroj » 2010.10.09 20:38

$header2 должен быть массивом.

WapStyle » 2010.10.09 21:35

А можно просто иправленный код  )) плз
Добавлено спустя   4 минуты  19 секунд:
по мне Curl как первоклашке php :D

WapStyle » 2010.10.09 23:41

Curl я разобрался

Теперь ещё один вопрос как сделать пороще данные коды

Код:

1
2
3
4
5
6
7
8
9
10
for($i = $start; $i<$l; ++$i){
$a[$i][1] = substr($a[$i][1],0,stripos($a[$i][1],")"));
$a[$i][1] = substr($a[$i][1],stripos($a[$i][1],",")+1);
$a1 = substr($a[$i][1],0,stripos($a[$i][1],","));
$a[$i][1] = substr($a[$i][1],stripos($a[$i][1],",")+1);
$a2 = substr($a[$i][1],0,stripos($a[$i][1],","));
$a[$i][1] = substr($a[$i][1],stripos($a[$i][1],",")+1);
$a3 = substr($a[$i][1],0,stripos($a[$i][1],","));
$a3 = substr($a3, 1 , strlen($a3)-2);
}

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while(stripos($data,"operate(") !== false){
$i++;
$a[$i][1] = substr($data, stripos($data,"operate(") + 8, 100);
$data = substr($data, stripos($data,"operate(") + 50);
$a[$i][2] = substr($data, stripos($data,'<b id="performer'));
$a[$i][2] = substr($a[$i][2], stripos($a[$i][2],">")+1);
$a[$i][3] = substr($a[$i][2], stripos($a[$i][2],"<"));
$a[$i][2] = substr($a[$i][2], 0, stripos($a[$i][2],"<"));
$a[$i][3] = substr($a[$i][3], stripos($a[$i][3],'<span id="title'));
$a[$i][3] = substr($a[$i][3], stripos($a[$i][3],">")+1);
if($a[$i][3][0] == '<')$a[$i][3] = substr($a[$i][3], stripos($a[$i][3],">")+1);
$a[$i][4] = substr($a[$i][3], stripos($a[$i][3],"<"));
$a[$i][3] = substr($a[$i][3], 0, stripos($a[$i][3],"<"));
$a[$i][4] = substr($a[$i][4], stripos($a[$i][4],'<div class="duration">')+22);
$a[$i][4] = substr($a[$i][4], 0, stripos($a[$i][4],"<"));
}

А то чёто больно сильно намутано.

Gemorroj » 2010.10.10 10:30

смысл кода сходу не улавливаю. а так в принципе, оформи грамотно и сойдет.

WapStyle » 2010.10.10 11:00

Вот вприципе что получилось

http://test.openserv.ru/?search=rammstein

Поисковик полность на Curl

Вот из-за кода который выше время выполнения скрипта 1.2968

WapStyle » 2010.10.10 11:34

Кстати верно ли?

Получение куков

Код:

1
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

Отправка куков

Код:

1
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
Gemorroj » 2010.10.10 12:55

WapStyle, технически верно, но в принципе, делать нужно не так. Кука передается в заголовках, как юзерагент, скажем, ты же не хранишь юзерагент в файле, верно? Так и передавай кукисы напрямую в заголовках. Т.е. в массив $headers2 добавь элемент типа $headers2[] = 'Cookie: var=value'; и все.

WapStyle » 2010.10.11 08:38

Спс за совет, но я уш так оставлю. 300 байт на ервере найду для файла cookie.tx :D

Gemorroj » 2010.10.11 10:24

Код:

1
2
3
file_put_contents('hello.txt', 'Hello, world');
$data = file_get_contents('hello.txt');
echo $data;
WapStyle » 2010.10.13 15:53

Намёка не понял :D Если ты про то что его могут слить, то к нему доступ закрыт через htaccess

Gemorroj » 2010.10.13 18:32

к тому что подход через жопу.

lexa » 2010.11.05 15:47

В чем может быть проблема пробую через curl граббер сделать он не пашет точнее на денвере работает все хорошо загружает картинки нормально а вот когда на хосте не работает выводиться пустое изображение обясните пожалуйста почиму?
$head = array('Accept: text/html;q=0.9, text/plain;q=0.8, image/png, */*;q=0.5',
              'Accept_charset: windows-1251, utf-8, utf-16;q=0.6, *;q=0.1',
              'Accept_encoding: identity',
              'Accept_language: en-us,en;q=0.5',
              'Connection: close',
              'Cache-Control: no-store, no-cache, must-revalidate',
              'Keep_alive: 300',
              'Expires: Thu, 01 Jan 1970 00:00:01 GMT');




//http://on-porn.ru/fotoload/'.$_SERVER['QUERY_STRING']

$ch = curl_init('http://on-porn.ru/fotoload/'.$_SERVER['QUERY_STRING']);
curl_setopt($ch, CURLOPT_USERAGENT,trim($br[rand(1,4)]));
curl_setopt($ch, CURLOPT_REFERER,'http://on-porn.ru');
curl_setopt($ch, CURLOPT_HTTPHEADER, $head );
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, false);
$f = curl_exec($ch);
curl_close($ch);

header('content-type: image/jpeg');


  echo $f;

Gemorroj » 2010.11.05 16:19

убери header('content-type: image/jpeg'); и замени curl_setopt($ch, CURLOPT_HEADER, false); на curl_setopt($ch, CURLOPT_HEADER, true);
посмотри что выдает

lexa » 2010.11.05 16:21

Спасибо Огромное

lexa » 2010.11.05 16:33

Чтото серавно не работает вот что выдало на хосте HTTP/1.1 302 Found Server: nginx/0.8.53 Date: Fri, 05 Nov 2010 13:31:14 GMT Content-Type: text/html; charset=UTF-8 Connection: close X-Powered-By: PHP/5.3.3 Set-Cookie: sos=1908a061d1c220fe7b8017f013f46357; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Location: /foto/Africans/001.jpeg Content-Length: 0
и на денвере много ээроглифов что может быть опять не так

Gemorroj » 2010.11.05 16:57

все так. нужно отлавливать эту переадресацию. CURL не поддерживает относительные пути (спецификация HTTP 1.1 их не позволяет). так что руками обрабатывать заголовок Location

lexa » 2010.11.05 17:00

а как его руками обработать? просто через другие функции не получаеться выкидывает на сайт который граблю и пишит с компа запрещено

Morgan » 2010.11.05 17:38

#20, preg_match();
#19, а как же CURLOPT_FOLLOWLOCATION?

Gemorroj » 2010.11.05 17:41

Morgan, если бы там бы указан полный путь с http:// и т.д. то да, как раз сработал бы CURLOPT_FOLLOWLOCATION, а так, даже в камментах к curl_setopt на php.net много постов посвящено костылям как с такой переадресацией работать

lexa » 2010.11.05 17:46

Спасибо за помощь парни много полезного узнал!

lexa » 2010.11.05 17:52

Вот теперь такое вылезло что это может быть?
HTTP/1.1 200 OK Server: nginx/0.8.53 Date: Fri, 05 Nov 2010 14:50:33 GMT Content-Type: image/jpeg Content-Length: 9528 Last-Modified: Thu, 18 Jun 2009 12:03:14 GMT Connection: close Accept-Ranges: bytes ����JFIFHH��C    ��C

Gemorroj » 2010.11.05 18:14

curl_setopt($ch, CURLOPT_HEADER, true);
поставь в false обратно

lexa » 2010.11.05 18:26

вобщем опять тоже самое на денвере работает на хосте нет:(
$br = array(
'HTCP3300-Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)',
'Panasonic-GAD87/A22 UP.Link/1.1',
'Panasonic-VS6/1.0/RP1 Profile/MIDP-2.0 Configuration/CLDC-1.1',
'LGE-VX8300/1.0 UP.Browser/6.2.3.2 (GUI) MMP/2.0'
);
$header[] = 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5';
$header[] = 'Cache-Control: max-age=0';
$header[] = 'Connection: close';
$header[] = 'Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1';
$header[] = 'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8';
$header[] = 'Pragma: no-cache';
/// $url = 'http://on-porn.ru/fotoload/'.$_SERVER['QUERY_STRING'];

$ch = curl_init('http://on-porn.ru/foto/'.$d.'/'.$f);
curl_setopt($ch, CURLOPT_USERAGENT,trim($br[rand(1,4)]));
curl_setopt($ch, CURLOPT_REFERER,'http://on-porn.ru');
curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, false);

$f = curl_exec($ch);
curl_close($ch);
//header('Content-type: image/jpeg');
   echo $f;

lexa » 2010.11.05 18:29

и вот еще что выдает HTTP/1.1 403 Forbidden Server: nginx/0.8.53 Date: Fri, 05 Nov 2010 15:28:40 GMT Content-Type: text/html; charset=iso-8859-1 Connection: keep-alive Content-Length: 208
чтото запрещено а незнаю что

lexa » 2010.11.05 18:46

Огромное всем спасибо разобрался надо было исключить все header

lexa » 2010.11.05 21:05

a как в header прописать видео 3gp ? прописываю так header('Content-Type: video/3gpp'); не работает

Gemorroj » 2010.11.05 21:23

именно так, что не работает?

lexa » 2010.11.05 21:45

почему то я ее вот так прописал не работало
$b = curl_exec($ch);
curl_close($ch);
header("Content-Type: video/3gpp");
header ("Content-Disposition: attachment; filename=$f");
echo curl_exec($ch);
curl_close($ch);
а вот так заработало нормально
header("Content-Type: video/3gpp");
header ("Content-Disposition: attachment; filename=$f");
echo curl_exec($ch);
curl_close($ch);

lexa » 2010.11.06 22:19

Вобщем такая проблема теперь помогите плиз наведите на путь истеный)
<img name="captcha_img_381" id="captcha_img_381" src="http://ncc-volga.ru/bitrix/tools/captcha.php?captcha_sid=c4ea3c47fa09b71fc2fee1a863bb6c61"/>
  ^^как можно ограбить такую капчу^^ прописываю полный путь до картинке и серавно не роботает

Gemorroj » 2010.11.07 13:36

что из этого нужно получить? сессию?

Код:

1
2
3
$str = 'f<img name="captcha_img_381" id="captcha_img_381" src="http://ncc-volga.ru/bitrix/tools/captcha.php?captcha_sid=c4ea3c47fa09b71fc2fee1a863bb6c61"/>ff';
preg_match('/captcha_sid=([^"]+)/', $str, $arr);
print_r($arr);
Lexa » 2010.11.12 11:19

Нет дело в том что картинка не загружаеться почему то, можешь помочь?

Gemorroj » 2010.11.12 13:04

твой код я сам выдумать должен чтоли?

shift » 2010.11.14 00:35

вот код капча выдает ошибку одинраз отправляет норм последущие разы не работает

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$br = array(
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)',
'Opera/9.50 (Windows NT 5.1; U; ru)',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1b3) Gecko/20090304 Firefox/3.1b3 '
);
 
$browser = trim($br[array_rand($br)]);
 
$host= "html.masyaka.ru";
$path="/servis/sms/index.php?".$_SERVER['QUERY_STRING'];
$fp=fsockopen($host,80,$errno, $errstr,10);
if(!$fp) { echo "$errstr ($errno)<br/>\n"; }else{
$data = "";$post=0; foreach($_POST as $key=>$value){
$post=1; $data.="&$key=$value";} if($data)$data=substr($data,1);
if($post) $headers = "POST $path HTTP/1.0\r\n";else
$headers = "GET $path HTTP/1.0\r\n";
$headers .= "Host: $host\r\n";
$headers .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif,image/x-bitmap, */*;q=0.1\r\n";
$headers .= "Accept-Charset: utf-8;q=0.6 windows-1251;q=0.1*;q=0.1\r\n";
$headers .= "Accept-Encoding: utf-8\r\n";
$headers .= "Accept-Language: ru, en;q=0.9\r\n";
$headers .= "Referer: html.masyaka.ru\r\n";
$headers .= "User-Agent: ".$browser."\r\n";//
if($post){ $headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= "Content-Length: ".strlen ($data)."\r\n";
$headers .= "\r\n"; $headers .= $data;}else $headers.="\r\n";
@fwrite($fp, $headers); while($ifmod != "\r\n") $ifmod = @fgets($fp, 128);
$ifmod = ''; while(!feof($fp)) $ifmod .= @fgets($fp, 4096); @fclose($fp); }
 
 
###################################################
##################################################
$ifmod = str_replace('>',">\n",$ifmod);
$ifmod = str_replace('<?xml version="1.0" encoding="utf-8"?>','',$ifmod);
$ifmod = preg_replace('|<!DOCTYPE(.*?)<body(.*?)>|isu','',$ifmod);
$ifmod = preg_replace('|<!--(.*?)-->|isu','',$ifmod);
$ifmod = str_replace('<img src="/page/index?make','<img src="http://html.masyaka.ru/page/index?make',$ifmod);
$ifmod = str_replace('index.php','send2.php',$ifmod);
 
$ifmod = str_replace("<hr />\n",'',$ifmod);
$ifmod = str_replace("\n\n","\n",$ifmod);
$ifmod = str_replace('<form method="post" action="post.php?make=send">','<form method="post" action="'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'">',$ifmod);
$ifmod = preg_replace('|</form>(.*?)</html>|is','',$ifmod);
$ifmod = str_replace('<img src="img/','<img src="http://html.masyaka.ru/servis/sms/img/',$ifmod);
$ifmod = preg_replace('|<a href="(.+)/super/(.*?)>(.*?)</a>|isu','',$ifmod);//
$ifmod = preg_replace('|<a href="send2.php?PHPSESSID(.*?)>(.*?)</a>|is','<a href="send2.php" title="">Отправить еще</a>',$ifmod);//
$ifmod = str_replace('','',$ifmod);
 
echo $ifmod;
shift » 2010.11.16 00:33

Что не кто не поможет проблему решить?

Gemorroj » 2010.11.16 10:35

1) это не курл
2) это не весь код
3) воспроизвести проблему не вышло