Automatizar tracking de envíos en correos de chile

Estando en la espera de varios envíos de aliexpress y viendo que correos de chile no indicaba absolutamente nada de los envíos hace casi 40 días me hice un pequeño script que tengo conectado a una planilla de GoogleSheet donde hago el tracking de mis compras para automatizar la paja que es entrar a la web de correos de chile y hacer el seguimiento.

Sólo consta de dos partes, una hoja de cálculo y un script php que debes alojar en un server propio, conectamos la planilla a nuestro script done debemos tener una fila con los números de seguimiento y la fórmula para importar los datos a nuestra hoja. Como dijo don Jack the ripper… vamos por partes

1 – El Script

Sencillo script php que mediante curl obtiene la data de seguimiento desde un endpoint de correos de chile al cual le pasamos por GET el código de seguimiento y lo formateamos en una tabla sin ningún tipo de estilo ni nada, pues no lo necesitamos.

<?
$NUMEROSEGUIMIENTO = $_GET["cod"];

$cdc = curl_init();

curl_setopt_array($cdc, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https://www.correos.cl/web/guest/seguimiento-en-linea?p_p_id=cl_cch_seguimiento_portlet_seguimientoenlineaportlet_INSTANCE_rsbcMueFRL4k&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_resource_id=cl_cch_seguimiento_portlet_seguimientoresurcecommand&p_p_cacheability=cacheLevelPage&_cl_cch_seguimiento_portlet_seguimientoenlineaportlet_INSTANCE_rsbcMueFRL4k_cmd=cmd_resource_get_seguimientos',
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => '_cl_cch_seguimiento_portlet_seguimientoenlineaportlet_INSTANCE_rsbcMueFRL4k_param_nro_seguimiento='.$NUMEROSEGUIMIENTO,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_HTTPHEADER => [
        'Origin: https://www.correos.cl',
        'sec-fetch-site: same-origin',
        'sec-fetch-mode: cors',
        'sec-fetch-dest: empty', 
        'accept: */*',
        'x-requested-with: XMLHttpRequest',
        'content-type: application/x-www-form-urlencoded; charset=UTF-8',
        'Host: www.correos.cl',
        'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
        'Referer: https://www.correos.cl/web/guest/seguimiento-en-linea',
        'cookie: COOKIE_SUPPORT=true; GUEST_LANGUAGE_ID=es_ES; _ga=GA1.2.2087837189.1600713732; _namecookie=CorreosChile user; _gcl_au=1.1.1691130660.1620060182; _fbp=fb.1.1620060182298.1611461223; dtCookie=v_4_srv_6_sn_22E32FFC0829E56B3C749A5FC5501FA8_perc_100000_ol_0_mul_1_app-3Aea7c4b59f27d43eb_1; SERVER_ID=da985e0915d0880b; rxVisitor=1620697737882PFRQ1M2MC8V9RU84TDFO83CLUJ3H83NM; _gid=GA1.2.575910950.1620697738; LFR_SESSION_STATE_20105=1620697739255; amlbcookie=01; CorreosDirectoryCookie=AQIC5wM2LY4SfcyN6r3KFbjXXnbvdwQ0yR1GOerdySad0RA.*AAJTSQACMDEAAlNLABQtODI4MTM2NzMyNjgzNjE1MzIxOAACUzEAAA..*; JSESSIONID=3BEE834E8F62209D4D6B8A9DC2CE4297; dtSa=true%7CC%7C-1%7CIngresar%20a%20tuSucursal%20Virtual%7C-%7C1620697742679%7C97737876_556%7Chttps%3A%2F%2Fwww.correos.cl%2F%7CHome%20-%20Correos%7C%7C%7C%7C%2F%7C1620697737193%7C; rxvt=1620700093511|1620697737885; dtPC=6$98292575_397h-vCIKRJFHUSGDDDRHKVIIPTIDKNTHRKUBF-0e4; dtLatC=2; LFR_SESSION_STATE_9926517=1620698315991'
    ]
]);

$output = curl_exec($cdc);
curl_close($cdc);
$json_rsp = json_decode($output);
echo "<table>";
echo "<tr>
        <td>{$json_rsp->descUltimoEstado}</td>";
if($json_rsp->existe_seg!==null){
    $ultimoEstado = json_decode($json_rsp->ultimoEstado);
    echo "<td>{$ultimoEstado->fecha}</td>";
    echo "<td>{$ultimoEstado->TextoTT}</td>";
}else{
    echo "<td>Sin mas info.</td>";
}
echo "</tr></table>";

Lo que retorna finalmente el script adaptado a mi necesidad es fecha de actualización del estado, estado actual y la descripción en una tabla con una fila y tres columnas

<table>
    <tr>
        <td>Envío entregado</td>
        <td>11 / 05 / 2021</td>
        <td>Envío se encuentra entregado en el destino final</td>
    </tr>
</table>

2 – Google Sheet

Habiendo creado una planilla de google sheet nos colocamos en una casilla cualquiera (Ej: A2) y agregamos nuestro código de seguimiento, luego en B2 agregamos la siguiente fórmula:

=IMPORTHTML(CONCATENATE("http://www.miPaginaWeb.com/script_seguimiento.php?cod=";K2;"&rand=";TODAY());"table";1)

En concreto vamos a utilizar la función IMPORTHTML para cargar en la planilla la información que nuestro script nos va a entregar, al abrir la planilla se actualiza la información con el ultimo estado que correos de chile indique para nuestro pedido sin la necesidad de ir a su web y realizar el proceso de seguimiento.

IMPORTHTML

RTFM: https://support.google.com/docs/answer/3093339?hl=es-419

Le pasamos como parámetro nuestra URL, segundo parámetro tipo tabla («table») y el tercero un «1» dado que tenemos una sola tabla con datos.

3 – Resultado final

Resultado final de la importación de datos en la planilla, tres columnas con los datos directos desde Correos de Chile sin hacer nada mas que abrir el documento.

Espero que les sirva!

Deja un comentario