Ergebnis 1 bis 12 von 12

Thema: vivo.sx Upload via PHP

  1. #1
    VIP Team
    Registriert
    May 2015
    Beiträge
    1,018
    Gefällt mir!
    862
    Du gefällst: 374

    vivo.sx Upload via PHP

    Hey,

    ich würde gerne via PHP auf vivo.sx uploaden. Leider nutzen die anders als andere Seiten mit diesem Skript einen Flash Upload und die benötigten Daten die an den Upload Server geschickt werden stehen scheinbar nicht im Quelltext der Seite.

    Hat jemand schon erfolgreich auf vivo.sx via Skript / C# / Java * hochgeladen und möchte mir verraten wie er das bewerkstelligt hat? Ich wäre sehr dankbar für Hilfe.

  2. Werbung - Hier werben?
  3. #2
    Senior
    Registriert
    Jun 2015
    Beiträge
    663
    Gefällt mir!
    208
    Du gefällst: 395
    Hochgeladne habe ich bei denen noch nichts aber du könntest doch via Entwicklertools schauen was für Daten gesendet werden, wen du damit nichts siehst ginge immernoch Wireshark(solange kein SSL) um da mal reinzusehen.

  4. #3
    VIP Team
    THEMENSTARTER


    Registriert
    May 2015
    Beiträge
    1,018
    Gefällt mir!
    862
    Du gefällst: 374
    Hab ich mir angeguckt. Unter anderem sind da zwei Session Ids dabei aber ich weiß nicht woher die kommen. :/ Also woher der Flashupload die Daten nimmt ...

  5. #4
    Senior Avatar von Nimbus
    Registriert
    Oct 2015
    Beiträge
    561
    Gefällt mir!
    96
    Du gefällst: 573
    Prinzipiell müsste man diesen Flash Kram auch decompilen können. Ob man/du daraus schlau wird/wirst kann ich dir allerdings nicht sagen. Tendenziell wird das schnell unübersichtlich. Flash ist zwar sehr sehr weit verbreitet, aber eben nicht überall angekommen. Ich würde mal versuchen zu schauen, ob ein alternativer Upload existiert (kennt man ja von vielen Seiten).

    Mögliche Ideen dazu:
    • schauen ob es irgendwo in den Einstellungen eine solche Option gibt
    • die Seite mit diversen User-Agents besuchen (alte Browser, mobile Browser, ...)
    • JavaScript anschauen, ob es hier entsprechende Hinweise gibt


    Ansonsten hilft es eventuell auch einfach mal den Support zu fragen.
    Die meisten Hoster finden es ja ganz okay, wenn jemand bei ihnen uppen möchte

  6. Diesen Mitgliedern gefällt dieser Beitrag:


  7. #5
    VIP Team
    THEMENSTARTER


    Registriert
    May 2015
    Beiträge
    1,018
    Gefällt mir!
    862
    Du gefällst: 374
    Push.

    Jemanden bekannt ob Vivo derweil ne (Upload) API hat?

    Stelle derzeit die HTTP Requests die der Webupload auf der Seite macht nach. Sprich erst Login, dann Upload. Leider bekomme ich sehr oft einen 403 (forbidden) von der https://vivo.sx/push zurück

  8. #6
    Im Ruhestand Avatar von fluffyxz
    Registriert
    Aug 2015
    Beiträge
    107
    Gefällt mir!
    296
    Du gefällst: 134
    Zoom machts auch nicht anderst
    Erste zwei waren keine Videodateien, bricht dann aber auch direkt ab
    dritter upload dann schon

    Vll sind nicht alles gültige Videodateien was du da hochschiebst?

  9. #7
    Tangiert peripher syrius Avatar von Jana-Maria
    Registriert
    Mar 2015
    Beiträge
    2,086
    Gefällt mir!
    532
    Du gefällst: 2,047
    soweit ich weiß hat er damals keine dateien mit .mp4 als endung genommen.


  10. #8
    VIP Team
    THEMENSTARTER


    Registriert
    May 2015
    Beiträge
    1,018
    Gefällt mir!
    862
    Du gefällst: 374
    Vll sind nicht alles gültige Videodateien was du da hochschiebst?
    Meine Überlegung war ob es Files sind die "auf ner internen Blacklist stehen". Deswegen hab ich die Datei mal über den Webupload hochgeladen, der Upload war zwar langsam ging aber ohne weitere Probleme durch.

    @ Jana-Maria. Guter Punkt. Sind aber MKV Files

    Edit war hier:

    Ich lade via PHP / Curl hoch.

    Es wird ein Login getätigt der auch klappt. Ich fische mir die Session aus der Rückgabe (Header) und sende diese als "session" beim post auf https://vivo.sx/push mit, Cookies werden auch mitgesendet

    Relevanter Code zum nachvollziehen der Geschichte

    Erstmal drei Funktionen die für die Anfrage zuständig sind:


    PHP-Code:
    function cookie($url) {
       return 
    BASEPATH.'cookies/'.parse_url($urlPHP_URL_HOST).'.cookie';
     } 

    PHP-Code:
     function mime_type($file){

      return 
    'video/x-matroska';

     } 
    PHP-Code:
    function request($url$data = array(), $enableCookies true$redirect false$file null) {

      
    $ch curl_init($url);

      
    $userAgent  'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0';

      if(
    $enableCookies) {
        
    curl_setopt($chCURLOPT_COOKIEFILEcookie($url));
        
    curl_setopt($chCURLOPT_COOKIEJAR,  cookie($url));
      }

      
    curl_setopt($chCURLOPT_USERAGENT,  $userAgent); // empty user agents probably not accepted
      
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
      
    curl_setopt($chCURLOPT_FOLLOWLOCATION$redirect);
      
    curl_setopt($chCURLOPT_AUTOREFERER,    1); // enable this - they check referer on POST
      
    curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);

      if(
    $file) {

        if(!
    file_exists($file))
        {
          throw new 
    Exception('File not found');
        }

        
    $mt mime_type($file);
        if(
    is_array($mt)){
            throw new 
    Exception("[error] mimetype failed for {$file} with message ".$mt['message']."\n");

        }

        
    $curl_file = new CurlFile(realpath($file), $mtbasename($file));

        
    $data['file'] = $curl_file;

      }

      if(
    count($data)) {
        
    curl_setopt($chCURLOPT_POSTcount($data));
        
    curl_setopt($chCURLOPT_POSTFIELDS$data);
      }
    #curl_setopt($ch, CURLOPT_HEADERFUNCTION, "curlResponseHeaderCallback");
      
    $response curl_exec($ch);
    $cookies curl_getinfo($chCURLINFO_COOKIELIST);


      
    $result = array(
        
    'contents' => $response,
        
    'request' => array(
          
    'statusCode' => curl_getinfo($chCURLINFO_HTTP_CODE),
          
    'info' => curl_getinfo($ch),
          
    'cookies' => $cookies
        
    )
      );

      
    curl_close($ch);

      return 
    $result;


    Die Funktion die dann den Upload macht

    PHP-Code:
    <?php
    function vivo_upload($file) {
        global 
    $cookies;
      
      if(!
    file_exists($file)) throw new Exception('File not found');

      
    $data['action'] = 'login';
      
    $data['mail'] = '';
      
    $data['password'] = '';

      
    $response request('https://vivo.sx/request'$datatrue);
      
      
    $json json_decode($response['contents'], true);

      if(!
    $json['status']) {
        throw new 
    Exception('[vivo.sx] Login failed');
      }

      
    $sid str_replace('session='''$cookies[1]);
      
    var_dump($sid);[COLOR="#FF0000"] <-- korrekt[/COLOR]
      
    #exit();

      
    $data = array();
      
    $data['action'] = 'upload';
      
    $data['session'] = $sid;
      
    $data['size'] = filesize($file);

      
    $response request('https://vivo.sx/push'$datatrue);
     echo 
    "<pre>";
     
    print_r($response);

    [
    COLOR="#FF0000"]// hier gibt es einen 403 (forbidde) nicht immer aber sehr sehr oft 
    [/COLOR]
      
    $server json_decode($response['contents'], true);

      if(
    json_last_error() != JSON_ERROR_NONE)
      {
        throw new 
    Exception('[vivo.sx] Upload Pre Step failed');
      }

      
    $data = array(
        
    'Filename' => basename($file),
        
    'session' => $sid,
        
    'name' => basename($file),
        
    'Upload' => 'Submit Query',
        
    'action' => 'push',

      );

      
    $response request($server['PUSH'], $datatruetrue$file);
      
    var_dump($response['contents']);
      return (
    filter_var($response['contents'], FILTER_VALIDATE_URL) ? $response['contents'] : false );

    }

    $plugin_functions['vivo.sx'] = 'vivo_upload';
    403 ist kein forbidden sondern nen access denied error
    Geändert von darkness (23.11.2018 um 10:22 Uhr)

  11. #9
    100% 0-Ahnung Avatar von FLX
    Registriert
    Mar 2015
    Beiträge
    1,647
    Gefällt mir!
    949
    Du gefällst: 1,244
    Ich hab gerade keinen Nerv mich da durch zu wühlen aber wenn es zeitweise geht dann hau mit einer Schleife drauf
    auch wenn das unschön ist.
    You are offline
    Try:
    • Don't Panic
    • Look around
    • Interact with reality

  12. #10
    Junior Avatar von Finch
    Registriert
    Nov 2018
    Beiträge
    128
    Gefällt mir!
    32
    Du gefällst: 77
    Allgemein, PHP ist dafür glaube ich nicht so richtig geeignet...

    Hab dir trotzdem mal schnell was zusammengeschrieben was funktionieren sollte
    (Guzzle via composer installieren)

    PHP-Code:
    <?php
    require "vendor/autoload.php";

    class 
    VivoUpload{
        public function 
    __construct($mail$password){
            
    $this->userMail $mail;
            
    $this->userPassword hash_pbkdf2('sha1'$passwordstrrev($password), 102432);
            
            
    $this->cookieFile 'cookies.gzl';
            
    $this->cookieJar = new \GuzzleHttp\Cookie\FileCookieJar($this->cookieFileTRUE);
            
            
    $this->client = new \GuzzleHttp\Client(
                [
                    
    'cookies'       => $this->cookieJar
                    
    'headers'       => 
                        [
                            
    'referer' => 'https://vivo.sx/upload',
                        ]
                ]
            );
        }
        
        public function 
    login(){
            
    $data = [
                
    'action'    =>  'login',
                
    'mail'      =>  $this->userMail,
                
    'password'  =>  $this->userPassword
            
    ];
            
            return 
    $request json_decode($this->sendRequest($data), TRUE);
        }
        
        public function 
    uploadFile($filename){
            
    $uploadServer $this->getUploadServer($filename);
            
    $cookieJarArray $this->client->getConfig('cookies');
            
            
    $response $this->client->request('POST'$uploadServer, [
                
    'multipart' => 
                    [
                        [
                            
    'name'     =>   'name',
                            
    'contents' =>   $filename,
                        ],
                        [
                            
    'name'     =>   'action',
                            
    'contents' =>   'push'
                        
    ],
                        [
                            
    'name'     =>   'session',
                            
    'contents' =>   $cookieJarArray->toArray()[2]['Value']
                        ],
                        [
                            
    'name'     =>   'file',
                            
    'contents' =>   fopen($filename'r'),
                            
    'headers'  =>   ['Content-Type' => 'video/mp4']
                        ],
                    ]
            ]);
            
            return 
    $response->getBody()->getContents();
        }
        
        public function 
    getUploadServer($filename){
            
    $cookieJarArray $this->client->getConfig('cookies');

            
    $data = [
                
    'action'    =>  'upload',
                
    'session'   =>  $cookieJarArray->toArray()[2]['Value'],
                
    'size'      =>  filesize($filename)
            ];
            
            
    $response json_decode($this->sendRequest($data), TRUE);
            
            return 
    $response['PUSH'];
        }
        
        public function 
    sendRequest($data){
            
    $response $this->client->post(
                
    'https://vivo.sx/request',
                [
                    
    'form_params'   =>  $data
                
    ]
            );
            
            return 
    $response->getBody()->getContents();
        }
    }

    $vivoObj = new VivoUpload('VIVO-MAIL''VIVO-PASSWORD');
    $vivoObj->login();
    $vivoObj->uploadFile('size.mp4'); // return: string vivolink
    Geändert von Finch (26.11.2018 um 21:35 Uhr)

  13. Diesen Mitgliedern gefällt dieser Beitrag:


  14. #11
    VIP Team
    THEMENSTARTER


    Registriert
    May 2015
    Beiträge
    1,018
    Gefällt mir!
    862
    Du gefällst: 374
    (halbwegs) aktuelles Update (working):

    Code:
    function vivo_upload($file, $filename) {    
        global $cookies, $config;
        
        if(!file_exists($file)) throw new Exception('File not found');
    
    
        $data['action'] = 'login';
        $data['mail'] = $config['vivo.sx']['username'];
        $data['password'] = $config['vivo.sx']['password'];
    
    
        $response = request('https://vivo.sx/request', $data, true, null, null, true);
          
        $json = json_decode($response, true);
    
    
        if(!$json['status']) {
            return false;
        }
    
    
        $sid = str_replace('session=', '', $cookies[1]);
         
    
    
        $data = array();
        $data['action'] = 'upload';
        $data['session'] = $sid;
        $data['size'] = filesize($file);
    
    
        $response = request('https://vivo.sx/request', $data, false);
    
    
        $server = json_decode($response, true);
    
    
        if(json_last_error() != JSON_ERROR_NONE){
            return false;
        }
    
    
        $data = array(
            'Filename' => basename($file),
            'session' => $sid,
            'name' => basename($file),
            'Upload' => 'Submit Query',
            'action' => 'push',
        );
    
    
        $response = request($server['PUSH'], $data, true, true, $file, $filename);
    
    
        return (filter_var($response, FILTER_VALIDATE_URL) ? $response : false );
    
    
    }
    Die request Funktion braucht ein Upgrade um Cookies zurückzugeben, falls sie es noch nicht kann ...

    Also

    Code:
    curl_setopt($ch, CURLOPT_HEADERFUNCTION, "curlResponseHeaderCallback");
    Also

    Code:
    function cookie($url) {        return __DIR__.'/cookies/'.parse_url($url, PHP_URL_HOST).'.cookie';
          }
    
    
          function curlResponseHeaderCallback($ch, $headerLine) {
            global $cookies;
            if (preg_match('/^Set-Cookie:\s*([^;]*)/mi', $headerLine, $cookie) == 1)
                $cookies[] = $cookie[1];
            return strlen($headerLine); // Needed by curl
        }
    .:: Well, duh! ::.

  15. Diesen Mitgliedern gefällt dieser Beitrag:


  16. #12
    Senior Avatar von Uranjitsu
    Registriert
    May 2016
    Beiträge
    207
    Gefällt mir!
    223
    Du gefällst: 158
    Warning: json_decode() expects parameter 1 to be string, array given in C:\wamp\apache2\htdocs\test.php on line 173
    LG - Uranjitsu
    Simple Szene BBcode Generator ( TOT :/ )

    [CODESCHNIPSEL]

Ähnliche Themen

  1. Was ist bei VIVO los?
    Von Solo im Forum Szene Daily Talk & OffTopic
    Antworten: 19
    Letzter Beitrag: 14.09.2021, 08:37
  2. Down-/Upload VPS?
    Von Rudi im Forum Szene Daily Talk & OffTopic
    Antworten: 9
    Letzter Beitrag: 28.03.2019, 20:12
  3. Wunsch-Hoster Streamango, Vivo & Vidzi
    Von hardy im Forum IntelliTool.it
    Antworten: 3
    Letzter Beitrag: 14.05.2018, 14:56
  4. share-online.biz - Upload über SSH
    Von Shiva im Forum Hoster (OCH, Stream, ...)
    Antworten: 4
    Letzter Beitrag: 12.11.2017, 17:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
SzeneBox.org... im Mittelpunkt der Szene!
© since 2015 szeneBOX.org - All Rights Reserved
Domains: www.szenebox.org