Obtener curl con la ip del usuario no la del servidor

  • Autor Autor xaiborweb
  • Fecha de inicio Fecha de inicio
xaiborweb

xaiborweb

Programador
No recomendado
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
hola compañeros de forobeta estoy creando un bot, para obtener el enlace directo de un vídeo.

con la siguiente secuencia de comandos

PHP:
<?php 
set_time_limit(0);

function curl($url,$referer,$metodopost,$cookies){
    $ch = curl_init($url);
    $headers = array(
        'accept-language: en-US;q=0.6,en;q=0.4',
        'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
    );
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    if(!empty($referer)){
        curl_setopt($ch, CURLOPT_REFERER, $referer);
    }else{
        curl_setopt($ch, CURLOPT_REFERER, $url);
    }
    if(!empty($metodopost)){ 
        curl_setopt($ch, CURLOPT_POST, TRUE); 
        curl_setopt($ch, CURLOPT_POSTFIELDS, $metodopost); 
    }
    if(!empty($cookies)){
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
    }
    $source = curl_exec($ch);
    curl_close($ch); 

    if(!empty($source)){ 
        return $source;
    }
}
//curl
$lin = 'pelisplus.net/v/yx93zpjkqol';
$lik = explode('/',$lin);
$server = $lik[0];
$video = $lik[2];

$json = 'https://www.'.$server.'/api/source/'.$video;
$metodopost = array('r'=>'','d'=>'www.'.$server);
$html = curl($json,'https://www.'.$lin,$metodopost,'');

preg_match_all('|data":(.*)]|sU', $html, $link);
echo $sources = str_ireplace('\/','/',$link[1][0].']');

con lo cual obtengo un enlace como este
HTML:
https://fvs.io/redirector?token=bE9sZlNoY3RPVWhMZHNhYjNSQ0lzZUZJd0JVUjdxdWhmd0ZCRTA2aThyMURJYTZacENCWndpdXRlL0FZMlVFaDBwVmdRcW4xcUZ4NU1OcFdQcitLSFBMZUpMdENXb1Bsd1Q5N3RDa1Q1alc4dFEvMFBYQ3Vqa0dPM29aMEpSNkNLVzJib3doWXRYMkx1VU4zVERnb0UrTUluL0M2OjB2RytFWjV2VXJXWTNVOHhDL1k0cHc9PQ

que redirecciona a este que al final seria el enlace directo
HTML:
https://www302.leasewebcdn.me/token=wXirzySsE0zp_UtqwcmrLQ/1554435368/181.51.0.0/26/4/5b/365af3472156381826a34617309f65b4-480p.mp4

el problema es que ese enlace se genera con la ip de mi server 181.51.0.0/26/4 y necesito obtener este enlace generado con la ip del usuario y no se si esto sea posible.
en google encontré que estas opciones pueden enmascarar pero no lo e logrado
PHP:
$ipAddress = "xxx.xxx.xxx.xxx"; //Custom IP here
curl_setopt($ch, CURLOPT_HTTPHEADER, ["REMOTE_ADDR: $ipAddress", "HTTP_X_FORWARDED_FOR: $ipAddress"]);

tampoco estoy totalmente seguro que por aquí este la solución o sea otra, agradezco cualquier ayuda 😉
 
A lo mejor tengas que usar un proxy!
 
[MENTION=42233]zcriptz[/MENTION]
[MENTION=21382]Andres128[/MENTION]

disculpen si los molesto por mencionarlos pero ya que son unos crack en estos temas me preguntaba si tenían alguna idea ? gracias.
 
uff siempre sales con esos sitios tan enredados xD

Por que no intentas con un proxy gratis, yo probé con uno de estos gratis bien malos por cierto y funciono:

104.248.7.88:3128
185.80.130.17:80
134.209.80.237:80
206.125.41.135:80
178.128.123.123:8080
207.180.233.72:80
139.255.51.250:80
62.80.191.90:80
80.157.236.98:80
128.199.156.55:8080
180.253.209.35:8080
188.225.179.98:80
46.43.70.254:80
36.65.165.252:8080

curl_setopt($ch, CURLOPT_PROXY, '104.248.7.88:3128');

Puedes comprar uno barato privado aquí Buy proxy. Personal anonymous IPv4/IPv6 proxies / PROXY6.net para las pruebas, esos de arriba se mueren pronto:

Ese fvs.io como que compara las ip y si no coinciden no genera el enlace y manda un 404, debe ser que obtienen la ip real la verdad no se al parecer no se puede fakear con la cabecera (bueno esto no lo confirmo)... de pronto alguien con mas conocimiento nos ilumine en esto xD
 
uff siempre sales con esos sitios tan enredados xD

Por que no intentas con un proxy gratis, yo probé con uno de estos gratis bien malos por cierto y funciono:



curl_setopt($ch, CURLOPT_PROXY, '104.248.7.88:3128');

Puedes comprar uno barato privado aquí Buy proxy. Personal anonymous IPv4/IPv6 proxies / PROXY6.net para las pruebas, esos de arriba se mueren pronto:

Ese fvs.io como que compara las ip y si no coinciden no genera el enlace y manda un 404, debe ser que obtienen la ip real la verdad no se al parecer no se puede fakear con la cabecera (bueno esto no lo confirmo)... de pronto alguien con mas conocimiento nos ilumine en esto xD

el problema no es que no pueda obtener el enlace directo, si no que cuando pongo el script en mi server el enlace que obtiene solo le funcionara con la ip del server es decir a los usuarios les da error me hago entender? por que el enlace esta generado por ip
 
Hola,
No se puede, salvo que le configures mediante un software en la PC del usuario para usarla como Proxy o tunel.

PD: Agrego, dependiendo como esta programado el sitio web te puede reconocer la IP de un header personalizado, tal como te dijeron mas arriba How to use an user IP with PHP/cURL? - Stack Overflow, pero esto solo funcionaria si estaria hecho de una forma concreta el sitio web y no funcionaria en forma genérica para todos.

Saludos
 
el problema no es que no pueda obtener el enlace directo, si no que cuando pongo el script en mi server el enlace que obtiene solo le funcionara con la ip del server es decir a los usuarios les da error me hago entender? por que el enlace esta generado por ip

Es que el token está basado en la IP que hizo la petición, por lo tanto, tendrías que saber como se genera el token, o bien hacer de proxy.

Es imposible simular la IP del usuario con cURL.

La web en donde generas el enlace podría usar "x-forwarded-for" como IP, que es una cabecera editable. Lo cual dudo muchisimo, (esto era hace mucho tiempo) pero es una posibilidad.


En cuanto a "hacer de proxy", sería:

Web -> Servidor -> Usuario

(O sea que todo previamente pasaría por tu servidor, así que si es un archivo de 1 GB, tendrás que descargar y subir 1 GB, puede ser a la par)

Puedes hacerlo editando este script:
https://forobeta.com/php/695948-tomar-video-de-rapidvideo-2-0-php.html

Que prácticamente es el mismo "problema", generan un token que solo permite que la IP que generó el enlace sea la que ingrese a él, no tengo idea de como lo generan (ya que es interno) e hice ese script que hace de proxy.
 
Última edición:
Es que el token está basado en la IP que hizo la petición, por lo tanto, tendrías que saber como se genera el token, o bien hacer de proxy.

Es imposible simular la IP del usuario con cURL.

La web en donde generas el enlace podría usar "x-forwarded-for" como IP, que es una cabecera editable. Lo cual dudo muchisimo, (esto era hace mucho tiempo) pero es una posibilidad.


En cuanto a "hacer de proxy", sería:

Web -> Servidor -> Usuario

(O sea que todo previamente pasaría por tu servidor, así que si es un archivo de 1 GB, tendrás que descargar y subir 1 GB, puede ser a la par)

Puedes hacerlo editando este script:
https://forobeta.com/php/695948-tomar-video-de-rapidvideo-2-0-php.html

Que prácticamente es el mismo "problema", generan un token que solo permite que la IP que generó el enlace sea la que ingrese a él, no tengo idea de como lo generan (ya que es interno) e hice ese script que hace de proxy.

gracias crack por aclarar la duda entonces me preguntaba lo siguiente este estream
HTML:
https://www.pelisplus.net/v/7z9-2p7r2ox
https://www.jplayer.net/v/7z9-2p7r2ox
esta alojado en este servidor
HTML:
https://www.fembed.com/v/8xopy3rmqo7
https://www.fembed.com/v/7z9-2p7r2ox
que permite cambiar de dominio, pero el reproductor pelisplus.net solo permite la inserción en ciertos dominios con lo cual en otro domino no funciona el iframe abra alguna opción para poderlo mostrar como iframe en otro dominio?

gracias 😉
 
hola compañeros de forobeta estoy creando un bot, para obtener el enlace directo de un vídeo.

con la siguiente secuencia de comandos

PHP:
<?php
set_time_limit(0);

function curl($url,$referer,$metodopost,$cookies){
    $ch = curl_init($url);
    $headers = array(
        'accept-language: en-US;q=0.6,en;q=0.4',
        'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
    );
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    if(!empty($referer)){
        curl_setopt($ch, CURLOPT_REFERER, $referer);
    }else{
        curl_setopt($ch, CURLOPT_REFERER, $url);
    }
    if(!empty($metodopost)){
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $metodopost);
    }
    if(!empty($cookies)){
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
    }
    $source = curl_exec($ch);
    curl_close($ch);

    if(!empty($source)){
        return $source;
    }
}
//curl
$lin = 'pelisplus.net/v/yx93zpjkqol';
$lik = explode('/',$lin);
$server = $lik[0];
$video = $lik[2];

$json = 'https://www.'.$server.'/api/source/'.$video;
$metodopost = array('r'=>'','d'=>'www.'.$server);
$html = curl($json,'https://www.'.$lin,$metodopost,'');

preg_match_all('|data":(.*)]|sU', $html, $link);
echo $sources = str_ireplace('\/','/',$link[1][0].']');

con lo cual obtengo un enlace como este
HTML:
https://fvs.io/redirector?token=bE9sZlNoY3RPVWhMZHNhYjNSQ0lzZUZJd0JVUjdxdWhmd0ZCRTA2aThyMURJYTZacENCWndpdXRlL0FZMlVFaDBwVmdRcW4xcUZ4NU1OcFdQcitLSFBMZUpMdENXb1Bsd1Q5N3RDa1Q1alc4dFEvMFBYQ3Vqa0dPM29aMEpSNkNLVzJib3doWXRYMkx1VU4zVERnb0UrTUluL0M2OjB2RytFWjV2VXJXWTNVOHhDL1k0cHc9PQ

que redirecciona a este que al final seria el enlace directo
HTML:
https://www302.leasewebcdn.me/token=wXirzySsE0zp_UtqwcmrLQ/1554435368/181.51.0.0/26/4/5b/365af3472156381826a34617309f65b4-480p.mp4

el problema es que ese enlace se genera con la ip de mi server 181.51.0.0/26/4 y necesito obtener este enlace generado con la ip del usuario y no se si esto sea posible.
en google encontré que estas opciones pueden enmascarar pero no lo e logrado
PHP:
$ipAddress = "xxx.xxx.xxx.xxx"; //Custom IP here
curl_setopt($ch, CURLOPT_HTTPHEADER, ["REMOTE_ADDR: $ipAddress", "HTTP_X_FORWARDED_FOR: $ipAddress"]);

tampoco estoy totalmente seguro que por aquí este la solución o sea otra, agradezco cualquier ayuda 😉
Hola me gustaria saber si ese script te sigue funcionando, porque hace una semana lo probe y funcionaba, pero ahora me lanza tokens no validos y no puedo obtener el video. ¿Sabes que se podria hacer?
 
Hola me gustaria saber si ese script te sigue funcionando, porque hace una semana lo probe y funcionaba, pero ahora me lanza tokens no validos y no puedo obtener el video. ¿Sabes que se podria hacer?
me pasas el codigo php el otro esta incompleto
 
still work mr?
because i need this
 
Atrás
Arriba