典型的なブラウザベースのユーザーは、サイト (A) にアクセスし、サブページ (B)、別のサブページ (C) にリンクし、最後にページ (D) でのアクティビティを確認します。
これらの最初のステップを curl でシミュレートして、スクリプトを起動するとターゲット ドメインとやり取りし、ユーザーが中間アクションを実行する必要なく (D) に到達するようにしています。
私はcurlの経験があまりなく、最後のページに行くと最後に何かを失敗しているように感じます(明示的に設定したCookieが上書きされるなど)。また、実際に他のサイトにいるのではなく、スクリプトの URL にとどまっています...しかし、Location ヘッダーを使用すると、以前のアクションをさらに確実に無視します。
以下から得られるのは、以前に (A)(B)(C) をヒットしたことを認識せずに (D) にたどり着くことです。
これは私が作業しようとしてきたコードですが、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);
?>