典型的基于浏览器的用户访问站点 (A),然后链接到某个子页面 (B),然后是另一个 (C),最后在页面 (D) 上查看他们的活动
我试图通过 curl 模拟这些第一步,以便在触发我的脚本时,它与目标域交互,并且用户最终进入 (D) 而无需采取中间操作。
我对 curl 没有太多经验,当我进入最后一页时,我有一种感觉,我在最后搞砸了一些东西(我明确设置的 cookie 被覆盖了,等等)。我还保留在我的脚本的 URL 上,而不是真正在那个其他站点上……但如果我使用 Location 标头,我更肯定会忽略先前的操作。
我从下面得到的是我最终在 (D) 上没有意识到以前击中过 (A)(B)(C)
这是我一直在尝试使用的代码,但我不确定我是否缺少一些 CURLOPT,或者它是否是我的方法中更基本的东西。感谢您的任何指导。
<?php
$item1=990525;
$item2=208208;
$home="http://www.somedomain.com";
$add=$home."/cart/addSkuByButton.do;jsessionid=0000RSqxtdShvtVm0lVAb29p-9N:1659q38ci?ajaxATCRequest=true&sourcePage=&cmd_addCart.button.INDEX[0]=Add%20to%20Cart&trackingCategory=1000000000&entryFormList[0].selected=on&entryFormList[0].sku=";
$toCart="&entryFormList[0].qty=";
$cart=$home."/cart/shoppingCart.do;jsessionid=0000RSqxtdShvtVm0lVAb29p-9N:1659q38ci";
session_start(); //do I need this?
//setup
$c=curl_init();
curl_setopt($c,CURLOPT_RETURNTRANSFER,true);
curl_setopt($c,CURLOPT_COOKIESESSION,true); //should I use this? I've also tried COOKIEFILE without success
curl_setopt($c,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c,CURLOPT_HEADER, 1);
//set a session ID
curl_setopt($c,CURLOPT_COOKIE, "jsessionid=0000RSqxtdShvtVm0lVAb29p-9N:1659q38ci; path=/; domain=www.somedomain.com");
//visit main domain
curl_setopt($c,CURLOPT_URL, $home);
curl_exec($c);
//programattically visit sub pages
curl_setopt($c,CURLOPT_URL, $add.$item1.$toCart);
curl_exec($c);
curl_setopt($c,CURLOPT_URL, $add.$item2.$toCart);
curl_exec($c);
curl_setopt($c, CURLOPT_RETURNTRANSFER, false);
curl_setopt($c,CURLOPT_HEADER, false);
//actually visit final page
curl_setopt($c,CURLOPT_URL, $cart);
curl_exec($c);
curl_close($c);
?>