Igo*_* D. 6 cookies ocaml http-headers
我正在尝试编写一个机器人来提取一些仅供经过身份验证的用户使用的数据.我定居ocaml (v. 3.12.1)和ocamlnet (v. 3.6.5).脚本的第一部分向网站发送POST请求,并且通过我收到的html,我可以看出身份验证有效(p1并且p2此代码示例中的值显然不是我正在使用的值).
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();
Run Code Online (Sandbox Code Playgroud)
然后我提取存储了php会话ID,帐户名,密码哈希等的cookie,将它们放在下一个请求的标题中并运行它.这就是我遇到麻烦的地方:我系统地得到每个匿名访客获得的无聊页面.
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();
Run Code Online (Sandbox Code Playgroud)
当我打印cookie的内容时,我确实得到了一些奇怪的东西:我希望cookie的域名是,kraland.org但似乎并非如此.这是我与输出一起使用的打印命令:
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
Run Code Online (Sandbox Code Playgroud)
编辑:我使用Haskell的Http-conduit-browser解决了这个问题,它使用的东西非常类似于doc的例子.
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |