php - 使用 PHP 和 cURL 复制 HTTP 请求

标签 php cookies curl http-headers httprequest

我正在尝试从名为“CM/ECF”(Pacer)的东西请求受密码保护的页面,以使用 PHP/cURL 查看法庭记录等。

我正在使用名为 Tamper Data 的 FireFox 扩展,它允许我查看 header 和 POST 数据,然后尝试使用 cURL 复制该请求 PHP。

由于某种原因它不起作用,我不断收到登录请求。我可以正常登录,将 cookie 保存到 cookie jar 并获取“主”页面,但是当我进行第二次curl调用时(发送相同的 cookie)到搜索页面,主机将我重定向到登录页面。

两部分问题: 第 1 部分 - 当我使用 TaperData 查看请求页面时发送的 cookie 时,TamperData 向我显示以下内容:

PacerUser="xxxxxxxxxxx                               xxxxxxx"; 
PacerSession="xxxxxSW8+F/BCzRxxxxxxhYtWpfO4ZR8WTEYbnaeeoVixAp5YnKMWxxxxxx0U8MoEPt2FOxxxxxxx/5B9ujb"; 
PacerPref="receipt=Y"; 
PacerClientCode=""; 
__utma=20643455934534311.139983455.139934505.13998383455.1; 
__utmb=206345345.10.13453405; 
__utmc=2053453433351; 
__utmz=20653453351.1399345345.1.utmcsr=pacer.gov|utmccn=(referral)|utmcmd=referral|utmcct=/cmecf/developer/

但是 libcurl 生成的 cookie 文件不包含任何以下划线开头的行。这些是什么?

这是我的浏览器发出的请求,从 TamperData 复制:

Host=ecf.almb.uscourts.gov
User-Agent=Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language=en-US,en;q=0.5
Accept-Encoding=gzip, deflate
DNT=1
Cookie=PacerUser="wmasdfasdf                                ZFBgasdfasdfsdff PacerSession="7rkPasdfasdfasdfasdfasdfsdadfnaeeoVixAp5YnKMW9lokKeq4ss4m0U8MoEPt2FOj2P/51RLh/5B9ujb"; PacerPref="receipt=Y"; PacerClientCode=""; __utma=203145253483351.15234521.13998234523405.139234505.139982345305.1; __utmc=2034533351; __utmz=206453453351.14538105.1.1.utmcsr=pacer.gov|utmccn=(referral)|utmcmd=referral|utmcct=/cmecf/developer/
Connection=keep-alive
Cache-Control=max-age=0

这是我的 PHP

$Headers = array(
    "Host: ".$this->CaseFiled_endpoints[$district],
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language: en-US,en;q=0.5",
    "Accept-Encoding: gzip, deflate",
    "Connection: keep-alive"
);        


$url = "https://".$this->CaseFiled_endpoints[$district]."/cgi-bin/CaseFiled-Rpt.pl";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0');
curl_setopt($ch, CURLOPT_HTTPHEADER, $Headers);
curl_setopt($ch, CURLOPT_REFERER, $url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath($this->cookiefile));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath($this->cookiefile));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$answer2 = curl_exec($ch);

return curl_getinfo($ch);

我的代码有什么明显的错误吗?还有其他工具可以让这件事变得更容易吗?一个可以输出curl代码的浏览器插件?

最佳答案

在 Chrome 网络选项卡中,您可以找到“复制为 cURL”功能。它将命令行发送到剪贴板,并使用 cURL 复制该请求。从那时起,将其转换为 PHP 代码应该很简单。

enter image description here

关于php - 使用 PHP 和 cURL 复制 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23597732/

相关文章:

php - 如何使用 curl 发送数组和对象

php - php中有 "map"函数吗?

php - .htaccess 在 SSL/端口 443 下被忽略

javascript - 无法传递数组元素来恢复表单

.net - 我的网站被 Statcounter 入侵了! Statcounter 是否保留 cookie 的记录?

使用 JAX-RS 进行 JavaScript cookie 管理

bash - 使用 cURL 下载目录中的所有文件

php - 有没有办法在查询中使表名动态化?

php - 如何向 mySQL 表中插入多行

javascript - (node.js) 如何从远程服务器获取cookie?