Ergebnis 1 bis 11 von 11

Thema: vivo.sx Upload via PHP

  1. #1
    nachtaktiv
    Registriert
    May 2015
    Beiträge
    982
    Gefällt mir!
    853
    Du gefällst: 370

    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.

    • szeneBOX.org Partner - Partner werden?



  2. #2
    Senior
    Registriert
    Jun 2015
    Beiträge
    423
    Gefällt mir!
    126
    Du gefällst: 256
    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.

  3. #3
    nachtaktiv
    THEMENSTARTER


    Registriert
    May 2015
    Beiträge
    982
    Gefällt mir!
    853
    Du gefällst: 370
    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 ...

  4. #4
    Senior Avatar von Nimbus
    Registriert
    Oct 2015
    Beiträge
    432
    Gefällt mir!
    83
    Du gefällst: 418
    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

  5. Diesen Mitgliedern gefällt dieser Beitrag:


  6. #5
    nachtaktiv
    THEMENSTARTER


    Registriert
    May 2015
    Beiträge
    982
    Gefällt mir!
    853
    Du gefällst: 370
    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

  7. #6
    Junior Avatar von fluffyxz
    Registriert
    Aug 2015
    Beiträge
    88
    Gefällt mir!
    279
    Du gefällst: 119
    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?
    Nein, gib mir W̶h̶i̶s̶k̶a̶s̶ Monero
    Nehme gerne spenden an <3

  8. #7
    Tangiert peripher syrius Avatar von Jana-Maria
    Registriert
    Mar 2015
    Beiträge
    1,704
    Gefällt mir!
    426
    Du gefällst: 1,742
    soweit ich weiß hat er damals keine dateien mit .mp4 als endung genommen.
    Wenige Menschen denken, und doch wollen alle entscheiden.
    Dumm wird man nicht, dumm bleibt man.
    Entweder man lebt, oder man ist konsequent.



  9. #8
    nachtaktiv
    THEMENSTARTER


    Registriert
    May 2015
    Beiträge
    982
    Gefällt mir!
    853
    Du gefällst: 370
    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 09:22 Uhr)

  10. #9
    100% 0-Ahnung Avatar von FLX
    Registriert
    Mar 2015
    Beiträge
    911
    Gefällt mir!
    667
    Du gefällst: 869
    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

  11. #10
    Junior Avatar von Finch
    Registriert
    Nov 2018
    Beiträge
    39
    Gefällt mir!
    6
    Du gefällst: 15
    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 20:35 Uhr)

  12. Diesen Mitgliedern gefällt dieser Beitrag:


  13. #11
    nachtaktiv
    THEMENSTARTER


    Registriert
    May 2015
    Beiträge
    982
    Gefällt mir!
    853
    Du gefällst: 370
    (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! ::.

Ähnliche Themen

  1. depfile.us Upload
    Von darkness im Forum IntelliTool.it
    Antworten: 0
    Letzter Beitrag: 19.07.2017, 00:09
  2. [✔] file-upload.net
    Von mowe im Forum Filecrypt.cc - Hoster & Unterstützung
    Antworten: 2
    Letzter Beitrag: 06.06.2017, 13:53
  3. Sample Upload Fehlermeldung
    Von hardy im Forum IntelliTool.it
    Antworten: 5
    Letzter Beitrag: 14.03.2017, 13:31
  4. Shared.sx Upload
    Von fuckedup im Forum Warez Daily Talk & OffTopic
    Antworten: 7
    Letzter Beitrag: 23.08.2016, 00:37
  5. (BASH) - Upload promptfile.com - API/Schnittstelle
    Von Syrius im Forum Entwicklung / Programmierung
    Antworten: 17
    Letzter Beitrag: 23.06.2015, 14:11

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