cookies http-headers ocaml

Manejo de cookies en Ocamlnet



http-headers (0)

Intento escribir un bot que extraiga algunos datos que solo están disponibles para los usuarios autenticados. Me conformé con ocaml (v. 3.12.1) y ocamlnet (v. 3.6.5) . La primera parte del script envía una solicitud POST al sitio web y por el html que recibo, puedo decir que la autenticación funcionó (los valores de p1 y p2 en este ejemplo de código obviamente no son los que estoy usando).

open Http_client open Nethttp let pipeline = new pipeline let () = let post_call = new post "http://www.kraland.org/main.php?p=1&a=100" [("p1", "username"); ("p2", "password"); ("Submit", "Ok!")] in pipeline#add post_call; pipeline#run();

Luego extraigo las cookies donde se almacenan la id. De la sesión php, el nombre de la cuenta, un hash de la contraseña, etc., las coloco en el encabezado de la siguiente solicitud y la ejecuto. Y aquí es donde me encuentro con problemas: obtengo sistemáticamente la página aburrida que recibe cada visitante anónimo.

let cookies = Header.get_set_cookie post_call#response_header in let get_call = new get "http://www.kraland.org/main.php?p=1" in let header = get_call#request_header `Base in Header.set_set_cookie header cookies; pipeline#add get_call; pipeline#run();

Cuando imprimo el contenido de las cookies, obtengo algo extraño: esperaría que el dominio de las cookies fuera kraland.org pero no parece ser el caso. Este es el comando de impresión que uso junto con el resultado:

List.iter (fun c -> Printf.printf "%.0f [%s%s:%b] %s := %s/n" (match c.cookie_expires with None -> -1. | Some f -> f) (match c.cookie_domain with None -> "" | Some s -> s) (match c.cookie_path with None -> "" | Some s -> s) c.cookie_secure c.cookie_name c.cookie_value) cookies; -1 [/:false] PHPSESSID := 410b97b0536b3e949df17edd44965926 1372719625 [:false] login := username 1372719625 [:false] id := myid 1372719625 [:false] password := fbCK/0M+blFRLx3oDp+24bHlwpDUy7x885sF+Q865ms= 1372719625 [:false] pc_id := 872176495311

Editar: Tuve un problema con el Http-conduit-browser de Haskell y funciona como un hechizo utilizando algo muy parecido al ejemplo del doc .