所以我在PHP中构建一个脚本,它通过Curl使用HTTP POST请求将数据提交到第三方站点。到目前为止,我已经成功地将这个页面用了4页,但有一个页面并不想玩。
我在Chome中使用了HTTPTrack来准确跟踪在浏览器中执行操作时提交的POST数据。我还成功地在Firefox中使用HTTPRequester手动发布了这些数据,并且网站返回" 200 OK"并接受请求并处理数据。
然而,当在Curl中进行完全相同的请求时,它返回" 200 OK",但不处理数据。我在服务器上的tcpdump中跟踪了HTTP POST,它与Chome提交的和Firefox中的手动相同。此外,用于提交数据的方法在其他4个脚本中也是相同的,因此我不相信这是与代码相关的内容。
但我错过了一些东西,我不确定是什么,有什么想法吗?
按要求编码......
// Send post data
$url = "http://www.thesite.com/user.aspx";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, '/home/site/cookies/c.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/home/site/cookies/c.txt');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
//curl_setopt($ch, CURLOPT_HEADER, true);
//curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$html = curl_exec($ch);