Galleta de selenio para curvarse galletas -- php campo con python campo con selenium campo con curl campo con cookies camp Relacionados El problema

Selenium Cookie to Curl Cookie


0
vote

problema

Español

Cómo convertir una cookie guardada por Selenium ( driver.get_cookies() ) A una cookie que se puede usar con curl ?

La cookie de contenido O Selenium cuando se descarga a un archivo de texto se ve así:

  [{u'domain': u'.site.com', u'name': u'NID', u'value': u'somelooooooooooongvalue', u'expiry': 1443722412, u'path': u'/', u'secure': False}, {u'domain': u'.site.com', u'name': u'SID', u'value': u'somelooooooooooooooongvalue', u'expiry': 1490983212, u'path': u'/', u'secure': False}]   

¿Hay alguna manera de lograr esto?

Original en ingles

How to convert a cookie saved by selenium (driver.get_cookies()) to a cookie that can be used with curl ?

The content o selenium cookie when dumped to a text file looks like this:

[{u'domain': u'.site.com', u'name': u'NID', u'value': u'somelooooooooooongvalue', u'expiry': 1443722412, u'path': u'/', u'secure': False}, {u'domain': u'.site.com', u'name': u'SID', u'value': u'somelooooooooooooooongvalue', u'expiry': 1490983212, u'path': u'/', u'secure': False}] 

Is there any way to achieve this?

              
   
   

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

Me las arreglé para resolver esto con un regex.

Ejemplos de cookies deshabilitados a partir de selenium con driver.get_cookies() :

  $seleniumCookies = "[{u'domain': u'.site.com', u'name': u'NID', u'value': u'somelooooooooooongvalue', u'expiry': 1443722412, u'path': u'/', u'secure': False}, {u'domain': u'.site.com', u'name': u'SID', u'value': u'somelooooooooooooooongvalue', u'expiry': 1490983212, u'path': u'/', u'secure': False}]";  $curlCookies = "";  preg_match_all('/'name': u'(.*?)', u'value': u'(.*?)'/i', $seleniumCookies, $matches, PREG_PATTERN_ORDER); for ($i = 0; $i < count($matches[0]); $i++) {     $name =  $matches[1][$i];     $value =  $matches[2][$i];      $curlCookies .= "$name=$value;";  }   

El $curlCookies var ahora se ve así:

  NID=somelooooooooooongvalue;SID=somelooooooooooooooongvalue;   

Ahora podemos hacer la solicitud de rizo usando el $curlCookies dentro del CURLOPT_HTTPHEADER6 :

  $url =  "https://some.host.com/that-need-selenium-cookies"; $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Host: some.host.com:443", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language: en-US,en;q=0.8", "Cookie: $curlCookies" )); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0); curl_setopt($ch, CURLOPT_ENCODING, ""); $pagebody=curl_exec ($ch); curl_close ($ch);   

Eso es, el código funciona perfectamente. Espero que esto ayude a los demás.

 

I managed to solve this with a regex.

Example cookies dumped from selenium with driver.get_cookies():

$seleniumCookies = "[{u'domain': u'.site.com', u'name': u'NID', u'value': u'somelooooooooooongvalue', u'expiry': 1443722412, u'path': u'/', u'secure': False}, {u'domain': u'.site.com', u'name': u'SID', u'value': u'somelooooooooooooooongvalue', u'expiry': 1490983212, u'path': u'/', u'secure': False}]";  $curlCookies = "";  preg_match_all('/\'name\': u\'(.*?)\', u\'value\': u\'(.*?)\'/i', $seleniumCookies, $matches, PREG_PATTERN_ORDER); for ($i = 0; $i < count($matches[0]); $i++) {     $name =  $matches[1][$i];     $value =  $matches[2][$i];      $curlCookies .= "$name=$value;";  } 

The $curlCookies var now looks like this :

NID=somelooooooooooongvalue;SID=somelooooooooooooooongvalue; 

Now we can make the curl request using the $curlCookies inside the CURLOPT_HTTPHEADER:

$url =  "https://some.host.com/that-need-selenium-cookies"; $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Host: some.host.com:443", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language: en-US,en;q=0.8", "Cookie: $curlCookies" )); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0); curl_setopt($ch, CURLOPT_ENCODING, ""); $pagebody=curl_exec ($ch); curl_close ($ch); 

That's it, the code works perfectly. I hope this helps others.

 
 

Relacionados problema

1  ¿Cómo guardar imágenes favoritas después de cerrar sesión y seguirlas después de iniciar sesión?  ( How to save favorite images after logout and still see them after login ) 
problema: Entonces, cuando inicie sesión, un usuario puede ir al Browse.php para agregar imágenes a los favoritos.php, y las fotos aparecerán en esa págin...

0  ¿Hay alguna manera de marcar galletas como Httponly en Pilones?  ( Is there a way to flag cookies as httponly in pylons ) 
No puedo encontrar ninguna documentación en la web sobre cómo hacerlo. Creo que es probable que sea posible enviar algún tipo de respuesta de encabezado HTTP ...

0  Rieles: Cómo no incluir algunos atributos de DB en el modelo  ( Rails how to not include some db attributes in model ) 
Mi tabla DB tiene una columna que puede contener una gran cantidad de datos. No quiero que estos datos formen parte del objeto de rieles correspondiente (mode...

1  Formsauthentication.cookiedomain propiedad  ( Formsauthentication cookiedomain property ) 
Q1 foriauthentication.cokiedomain propiedad Especifica el dominio para el cual esta cookie es válida. Anulando esta propiedad es útil si desea que la co...

0  Recuperando las cookies de httpresponse  ( Retrieving cookies from httpresponse ) 
Tengo una acción de controlador que llamo a través de AJAX en la que configuro una cookie como esta: Response.Cookies["Notifications"].Value = "false"; Res...

1279  ¿Cómo pongo / no tomar una cookie con jQuery?  ( How do i set unset a cookie with jquery ) 
¿Cómo configuro y no prestar atención a una cookie utilizando jQuery, por ejemplo, cree una cookie llamada test y configure el valor en 1 ? ...

9  Desde un punto de espera de arquitectura, ¿qué es una sesión de mejor enfoque [] o cookies cifradas?  ( From an architecture stand point what is a best approach session or encrypted ) 
Estamos tratando de decidir la mejor decisión de mantener el estado a través de nuestra aplicación web. Estamos inclinados a usar cookies encriptadas en el na...

2  Configuración de una cookie en una llamada AJAX (PHP) y luego redirigiendo dentro de la devolución de llamada Ajax (JavaScript)  ( Setting a cookie in an ajax call php and then redirecting inside the ajax call ) 
He creado una página que establece una cookie en el clic de un botón (AJAX con PHP) y luego redirige a una página diferente (JavaScript). $.ajax({ url: ...

0  Pregunta de desarrollo del módulo de Drupal relacionado con las cookies y las redirecciones  ( Drupal module development question relating to cookies and redirects ) 
Ayuda por favor? Deseo desarrollar un módulo para hacer algo muy simple con PHP. Soy desafiado por la API de Drupal. Estoy usando la versión 6. METAL: 1) ...

23  ¿Cómo paso las galletas en una redirección de rizos?  ( How do i pass cookies on a curl redirect ) 
Imagina el siguiente escenario: Abro una conexión de rizo y pase un poco de XML-Logindata a través de POST. El servidor responde con una redirección de 302, d...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos