1

Тема: Поиск filmix.co

Здравствуйте ребята подскажите что не так делаю поиск на сайте , может полчаса поработать дальше не работает

+ открыть спойлер
<?php
if ( isset( $_REQUEST[ 'search'] ) )//
 
 {
$domen='https://filmix.co';
$search = urlencode($_REQUEST[ 'search']);
$post='scf=fx&story='.$search.'&search_start=0&do=search&subaction=search&years_ot=1902&years_do=2021&kpi_ot=1&kpi_do=10&imdb_ot=1&imdb_do=10&sort_name=&undefined=asc&sort_date=&sort_favorite=&simple=1';
$doc = curl($domen.'/engine/ajax/sphinx_search.php',$post);

//print_r($doc);
           preg_match_all('|class="short">.*?src="https(.+?)".*?title="(.+?)".*?itemprop="url" href="(.+?)"|ms', $doc, $maskat);
print_r($maskat);
 }
function curl( $url, $post ='' , $mode = array( ) )
  {
    $defaultmode = array(
         'charset' => 'utf-8',
        'ssl' => 1,
        'cookie' => 1,
        'headers' => 1,
        'useragent' => 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36' 
    );
    foreach ( $defaultmode as $k => $v )
      {
        if ( !isset( $mode[ $k ] ) )
            $mode[ $k ] = $v;
      }
$header =array (
);  

    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_HEADER, $mode[ 'headers' ] );
    curl_setopt( $ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt( $ch, CURLOPT_REFERER, $url );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $ch, CURLOPT_USERAGENT, $mode[ 'useragent' ] );
    curl_setopt( $ch, CURLOPT_ENCODING, $mode[ 'charset' ] );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, 1 );
    curl_setopt( $ch, CURLOPT_TIMEOUT, 200 );
    if ( $post )
      {
        curl_setopt( $ch, CURLOPT_POST, 1 );
        curl_setopt( $ch, CURLOPT_POSTFIELDS, $post );
        
      }
    if ( $mode[ 'cookie' ] )
      {
        curl_setopt( $ch, CURLOPT_COOKIEFILE, dirname( __FILE__ ) . 'filmix_cooki.txt' );
        curl_setopt( $ch, CURLOPT_COOKIEJAR, dirname( __FILE__ ) . 'filmix_cooki.txt' );
      }
    curl_setopt( $ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
    if ( $mode[ 'ssl' ] )
      {
        curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
      }
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);  
    $data = curl_exec( $ch );
        //$sent_headers = curl_getinfo($ch, CURLINFO_HEADER_OUT);
    //print_r( $sent_headers);
    curl_close( $ch );
    return $data;
  }

2

Re: Поиск filmix.co

bond пишет:

Здравствуйте ребята подскажите что не так делаю поиск на сайте , может полчаса поработать дальше не работает


пробуй примерно так

+ открыть спойлер
$url =    'https://filmix.co/search/';
$post =  urlencode($_REQUEST['q']);    
$page = curl($url.$post);
$page = iconv('windows-1251','utf-8',$page);
preg_match_all('#<img src="([^"]+)" itemprop="image" alt="(.*?)"\/>#',$page,$img);
//$img[1] ссылка на картинку
// $img[2] название
preg_match_all('#id="movie-(\d+)"#',$page,$id);
//$id[1]  data-id сериала, фильма

echo $page;


function curl( $url, $post ='' , $mode = array( ) )
  {
    $defaultmode = array(
         'charset' => 'utf-8',
        'ssl' => 1,
        'cookie' => 1,
        'headers' => 1,
        'useragent' => 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36' 
    );
    foreach ( $defaultmode as $k => $v )
      {
        if ( !isset( $mode[ $k ] ) )
            $mode[ $k ] = $v;
      }
$header =array (
);  

    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_HEADER, $mode[ 'headers' ] );
    curl_setopt( $ch, CURLOPT_REFERER, $url );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $ch, CURLOPT_USERAGENT, $mode[ 'useragent' ] );
    curl_setopt( $ch, CURLOPT_ENCODING, $mode[ 'charset' ] );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, 1 );
    curl_setopt( $ch, CURLOPT_TIMEOUT, 200 );
    if ( $post )
      {
        curl_setopt( $ch, CURLOPT_POST, 1 );
        curl_setopt( $ch, CURLOPT_POSTFIELDS, $post );
        
      }
    if ( $mode[ 'cookie' ] )
      {
        curl_setopt( $ch, CURLOPT_COOKIEFILE, dirname( __FILE__ ) . 'filmix_cooki.txt' );
        curl_setopt( $ch, CURLOPT_COOKIEJAR, dirname( __FILE__ ) . 'filmix_cooki.txt' );
      }
    curl_setopt( $ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
    if ( $mode[ 'ssl' ] )
      {
        curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
      }
    $data = curl_exec( $ch );
    curl_close( $ch );
    return $data;
  }
Отладка кода — это как охота. Охота на баги.

3

Re: Поиск filmix.co

Спасибо но к сожалению тоже не работает, возвращает пустой результат

+ открыть спойлер
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Fri, 06 Mar 2020 05:55:15 GMT
Content-Type: text/html; charset=cp1251
Transfer-Encoding: chunked
Connection: keep-alive
Location: https://filmix.co/search
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Access-Control-Allow-Origin: *
Content-Security-Policy: default-src * blob: data: 'unsafe-inline' 'unsafe-eval'; script-src * blob: data: 'unsafe-inline' 'unsafe-eval'; connect-src * data: 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; child-src * blob: data: ; style-src * 'unsafe-inline';
Strict-Transport-Security: max-age=15768000; includeSubDomains

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 06 Mar 2020 05:55:15 GMT
Content-Type: text/html; charset=cp1251
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: FILMIXNET=ihhhv7g7o3fhn69n8m8bm94es3; path=/; domain=.filmix.co; HttpOnly
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
Set-Cookie: dle_user_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; domain=.filmix.co; httponly
Set-Cookie: dle_password=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; domain=.filmix.co; httponly
Set-Cookie: dle_hash=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; domain=.filmix.co; httponly
Set-Cookie: remember_me=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; domain=.filmix.co; httponly
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Access-Control-Allow-Origin: *
Content-Security-Policy: default-src * blob: data: 'unsafe-inline' 'unsafe-eval'; script-src * blob: data: 'unsafe-inline' 'unsafe-eval'; connect-src * data: 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; child-src * blob: data: ; style-src * 'unsafe-inline';
Strict-Transport-Security: max-age=15768000; includeSubDomains

4

Re: Поиск filmix.co

bond пишет:

Спасибо но к сожалению тоже не работает, возвращает пустой результат

Тогда, давайте, так пробовать еще.
ссылка такая

http://site.ru/dir/index.php?q=название фильма/сериала
+ открыть спойлер
<?php

$cookies = array();
$headers =  "Host: filmix.co\r\n".
            "Origin: https://filmix.co\r\n".
            "X-Requested-With: XMLHttpRequest\r\n".
            "User-Agent: Mozilla/5.0 (Linux; Android 7.0; PLUS Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36\r\n".
            "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n".
            "Referer: https://filmix.co/search/".urlencode($_POST['q'])."\r\n".
            "Accept-Encoding: gzip, deflate, br\r\n".
            "X-Compress: null\r\n";
        
$url = 'https://filmix.co/search/';

$post = isset($_REQUEST['q'])  ? urlencode($_REQUEST['q']) : ''; 
   
$page = LoadPage($url.$post, "POST", $headers);

$page = iconv('windows-1251','utf-8',$page);
//echo $page;

preg_match_all('#<img src="([^"]+)" itemprop="image" alt="(.*?)"\/>#',$page,$img);

echo debug($img[1]); // ссылки на картинки

echo debug($img[2]); // Название

preg_match_all('#id="movie-(\d+)"#',$page,$id);

echo debug($id[1]); // data-id сериала или фильма


// Получение страницы с указанными методом и заголовками
function LoadPage($url, $method, $headers, $data='') {
 global $cookies;
    // Если есть кукисы - добавляем их значения в HTTP заголовки
    $coo = "";
    foreach($cookies as $key => $val) $coo .= $key."=".urlencode($val)."; ";
    
    if ($coo) $headers .= "Cookie: $coo\r\n";
    $options = array();
    $options['http'] = array('method' => $method ,
                             'header' => $headers,
                             'content'=> $data   );
    $context = stream_context_create($options);
    $page    = @file_get_contents($url, false, $context);
    // Перебираем HTTP заголовки ответа, чтобы установить кукис
    foreach($http_response_header as $c => $h) {
        if (stristr($h, 'content-encoding') and stristr($h, 'gzip')) {
            $page = @gzdecode($page);
        } else if (preg_match('#^Set-Cookie:\s*([^;]+)#', $h, $matches)) {
            parse_str($matches[1], $tmp);
            $cookies += $tmp;
        }
    }
    return $page;
}

// вывод значений массива
function debug($data){
return '<pre>' . print_r($data,1) . '</pre>';
}
+ пример

https://hms.lostcut.net/misc.php?action=pun_attachment&amp;item=4212

Прикреплённые файлы сообщения

1.PNG 27.53 kb, скачивалось 3 раза, начиная с 2020.03.06

Отладка кода — это как охота. Охота на баги.

5

Re: Поиск filmix.co

Спасибо так работает, насколько я понял curl посылает не все заголовки, и куки

6

Re: Поиск filmix.co

bond пишет:

Спасибо так работает, насколько я понял curl посылает не все заголовки, и куки

Для курла, этой функции нужно пройти в  2 захода, 1 заходом,курл тырит куки и заголовки,
а уже вторым отправляет.
Не захотел заморачиваться с двумя заходами..., но.  Но все же.
Для наглядности на curl, вот так будет работать поиск

+ код curl
<?php
$url = 'https://filmix.co/';
$page = curl($url);
$post = isset($_REQUEST['q']) ? urlencode($_REQUEST['q']) : '';
$page = curl($url.'search/'.$post);
$page = iconv('windows-1251','utf-8',$page);
//Вывод полученной страницы с искомым названием фильма/сериала
//echo $page;
// Поиск ссылок на картинки и название на странице
preg_match_all('#<img src="([^"]+)" itemprop="image" alt="(.*?)"\/>#',$page,$img);
echo debug($img[1]); // ссылки на картинки
echo debug($img[2]); // Название
// Поиск data-id сериала или фильма на странице
preg_match_all('#id="movie-(\d+)"#',$page,$id);
echo debug($id[1]); // data-id сериала или фильма


// Получение страницы с указанными методом и заголовками
//////////////////////////////////////////////////////////////
function curl($url, $post='', $mode=array()) {
  $defaultmode = array('charset' => 'utf-8', 'ssl' => 1, 'cookie' => 1, 'headers' => 0, 'useragent' => 'Mozilla/5.0 (Linux; Android 7.0; PLUS Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36');
     
  foreach ($defaultmode as $k => $v) {
    if (!isset($mode[$k]) ) {
      $mode[$k] = $v;
    }
  }
     
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HEADER, $mode['headers']);
  curl_setopt($ch, CURLOPT_REFERER, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_USERAGENT, $mode['useragent']);
  curl_setopt($ch, CURLOPT_ENCODING, $mode['charset']);
  curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
  curl_setopt($ch, CURLOPT_TIMEOUT, 200);
  if ($post) {
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  }
  if ($mode['cookie']) {
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/search_data.txt');
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/search_data.txt');
  }
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  if ($mode['ssl']) {
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  }
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

//вывод значений массива
function debug($data){
return '<pre>' . print_r($data,1) . '</pre>';
}

Результат тот же

+ скрин

https://hms.lostcut.net/misc.php?action=pun_attachment&amp;item=4212

Отладка кода — это как охота. Охота на баги.
Спасибо сказали: bond1