2 回答

TA贡献1874条经验 获得超12个赞
我成功了。诀窍是向登录页面发出初始 GET 请求,并获取 cookie 以及"__VIEWSTATE"
, "__VIEWSTATEGENERATOR"
,"__EVENTVALIDATION"
动态字段。然后使用这些字段 POST 到相同的 URL。
之后,我不得不发出两个 POST 请求,/dailyreport.aspx
同时从第一个获取视图状态和其余变量,并将它们传递给第二个。只有这样我才能检索返回的 HTML 表。

TA贡献1829条经验 获得超6个赞
你应该把你的POST数据放在里面CURLOPT_POSTFIELDS =>'',并且CURLOPT_URL应该指向登录 URL。您这样做的方式是使用 GET 请求请求站点。
$post = ['txtUserName'=>'myUserName','txtPassword'=>'myPassword123'];
curl_setopt_array($ch, array(
CURLOPT_URL => "https://partners.mrfavorit.com/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HEADER => true,
CURLOPT_POSTFIELDS =>http_build_query($post),
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"Cookie: ".$cookies2
),
));
$r2 = curl_exec($ch);
print_r($r2);
看到这个PHP + curl,HTTP POST 示例代码了吗?
[编辑] 添加http_build_query()
到$post
将生成一个application/x-www-form-urlencoded
HTTP 请求
- 2 回答
- 0 关注
- 127 浏览
添加回答
举报