加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

努力用PHP抓住asp.net

发布时间:2020-12-13 17:56:51 所属栏目:PHP教程 来源:网络整理
导读:我试图使用 PHP(5.6)和libcurl废弃网站. 该站点在asp.net中实现,可通过本地代理访问.站点使用HTTPS,因此不容易通过线路发送未加密的流量. 我在第一步失败了 – 登录. $curl_options = array( CURLOPT_RETURNTRANSFER = true,CURLOPT_HEADER = false,CURLOPT_
我试图使用 PHP(5.6)和libcurl废弃网站.

该站点在asp.net中实现,可通过本地代理访问.站点使用HTTPS,因此不容易通过线路发送未加密的流量.

我在第一步失败了 – 登录.

$curl_options = array(
     CURLOPT_RETURNTRANSFER => true,CURLOPT_HEADER         => false,CURLOPT_SSL_VERIFYPEER => false,CURLOPT_PROXY          => 'http://localproxy.example.com:8080',CURLOPT_PROXYUSERPWD   => "$proxyUser:$proxyPass",CURLOPT_PROXYAUTH      => CURLAUTH_NTLM,CURLOPT_FOLLOWLOCATION => true,CURLOPT_WRITEHEADER    => false,CURLOPT_COOKIEJAR      => $curl_cookie_jar,CURLOPT_COOKIEFILE     =>  $curl_cookie_jar
 );

 ...
 $ch=curl_init();
 curl_setopt($ch,CURLOPT_URL,$entryurl);
 curl_setopt_array($ch,$curl_options);
 $reply=curl_exec($ch);
 curl_close($ch);
 ...
 $postdata=array(
     'username'=>'someuser','password'=>'s3cr3t','__VIEWSTATE'=>$vstate,'__VIEWSTATEGENERATOR'=>$vsgen
 );

 $ch=curl_init();
 curl_setopt_array($ch,$curl_options);
 curl_setopt($ch,CURLOPT_POST,true);
 curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($postdata));
 $reply=curl_exec($ch);

在浏览器中,事件序列如下:

> GET /结果302重定向到/Login.aspx?ReturnUrl=/Index.aspx
>重定向位置返回的登录页面
>用户输入用户名和密码,然后点击提交类型的输入
>用户名,密码,提交和2个隐藏输入(__VIEWSTATE和__VIEWSTATEGENERATOR)被POST回到相同的URL(/Login.aspx?ReturnUrl=/Index.aspx)
>服务器响应302重定向到/Index.asp
>浏览器检索Index.asp(作为经过身份验证的用户)

但是,当我使用PHP脚本尝试此操作时,在步骤4之后,响应是步骤2.

我已经尝试将脚本指向本地非SSL网站,以检查Curl是否正在按照我的预期进行操作.它是.

分析

>正在捕获和重播Cookie
>正在填充所有必需的变量(包括__VIEWSTATE和__VIEWSTATEGENERATOR)并在POST中发回
>内容未被缓存 – 在GET和POST之间插入人为延迟会导致响应的时间戳不同
>虽然会话似乎正在运行,但是服务器响应就像POST是没有参数的GET一样 – 如果浏览器中提供了无效的用户名或密码,响应也不同,但GET和POST的抓取都返回相同的HTML.

我尝试添加浏览器中生成的所有额外标头(User-Agent,Accept,Accept-Language),没有任何影响.

我的问题是我不明白 curl只会向COOKIEJAR写入cookie而只能从COOKIEFILE读取.事实上,如果它们不在服务器的最后一个响应中,它似乎从COOKIEJAR中删除了cookie(仍然没有完全描述它).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读