qq_37992500 2017-11-07 15:52 采纳率: 0%
浏览 947
已结题

怎么样两次curl请求参数,模拟提交?

我想做一个模拟登陆,但是有一个动态参数$content在页面中,每次刷新都会变化。请问怎么样获取后再提交?

 <?php

$url="http://www.xxx/admin";//登陆的网址
$ch=curl_init($url);
curl_setopt($h,CURLOPT_RETURNTRANSFER,1);
$str=curl_exec($ch);
$start='<input type="hidden" name="xsrfToken" value="';  //修改这里开始的内容
$end='<fieldset class="form-group">';       //修改这里结束的内容
$wzs=strpos($str,$start);               //
$wze=strpos($str,$end);                 //
$len=$wze-$wzs;                     //内容的总长度
$content=substr($str,$wzs,$len);    //目的:只显示我们需要的那一部分
$content = substr($content,45,32);//获取到$content的值
curl_close($ch);


$url="http://www.xxx/admin/signin";  //模拟post提交登陆
$post_data=array (  
    "xsrfToken"=>$content,  
    "username"=>"xxxx@qq.com", 
    "password"=>"xxxxx" 
);  
$ch=curl_init();  
curl_setopt($ch,CURLOPT_URL,$url);  
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  
curl_setopt($ch,CURLOPT_POST,1);  
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);  
$output=curl_exec($ch);  
curl_close($ch);  
echo $output;  


  • 写回答

4条回答 默认 最新

  • oyljerry 2017-11-07 23:47
    关注

    你可以看看key的名字,xsrfToken
    它就是用来服务器返回给客户端的token,每次都会变化。你需要用webdriver端方式来模拟浏览器提交请求。

    评论

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样