php在服务器上如何链接网页,如何使用PHP在ASP服务器上获取网页?

几天前我决定写一个简短的脚本。它向ASP服务器发出两个GET请求,因为我想获得变量sessionId变量和视图状态变量。 我决定使用fsockopen(),它的工作原理直到第一个请求!之后,它崩溃,并有一个错误的请求错误。如何使用PHP在ASP服务器上获取网页?

下面的代码:

$fp = fsockopen("www.atb.bergamo.it", 80, $errno, $errstr, 30);

if (!$fp) {

echo "$errstr ($errno)
\n";

} else {

$out = "GET /ITA/Default.aspx?SEZ=2&PAG=38&MOD=LINTRV HTTP/1.1\r\n";

$out .= "Host: www.atb.bergamo.it\r\n";

$out .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2\r\n";

$out .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";

$out .= "Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3\r\n";

$out .= "Accept-Encoding: gzip, deflate\r\n";

$out .= "Connection: keep-alive\r\n\r\n";

fwrite($fp, $out);

$header = '';

do{

$header .= fgets($fp, 128);

}while(strpos($header, "\r\n\r\n") == false);

list(,$sessione) = explode('ASP.NET_SessionId=', $header);

list($sessione) = explode('; path=/; HttpOnly', $sessione);

$cookie = "Cookie: ASP.NET_SessionId=".$sessione."; READONLY=MA==; __utma=".$_COOKIE['__utma']."; __utmb=".$_COOKIE['__utmb']."; __utmc=".$_COOKIE['__utmc']."; __utmz=".$_COOKIE['__utmz']."; HstCfa1041967=".$_COOKIE['HstCfa1041967']."; HstCla1041967=".$_COOKIE['HstCla1041967']."; HstCmu1041967=".$_COOKIE['HstCmu1041967']."; HstPn1041967=".$_COOKIE['HstPn1041967']."; HstPt1041967=".$_COOKIE['HstPt1041967']."; HstCnv1041967=".$_COOKIE['HstCnv1041967']."; HstCns1041967=".$_COOKIE['HstCns1041967']."; c_ref_1041967=http%3A%2F%2Fwww.google.it%2Furl%3Fsa%3Dt%26rct%3Dj%26q%3Datb%2520orari%26source%3Dweb%26cd%3D1%26sqi%3D2%26ved%3D0CC4QFjAA%26url%3Dhttp%253A%252F%252Fwww.atb.bergamo.it%252FITA%252FDefault.aspx%253FSEZ%253D2%2526PAG%253D38%2526MOD%253DLINTRV%26ei%3DxZi3UNK4AojysgburIGoCg%26usg%3DAFQjCNFKu0Tuffg6uZVhC1akh3TKqesWcQ;"; // __atuvc=27%7C48

$cookie = str_replace("utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(none)", "utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=atb", $cookie);

echo " ci sono ";

$out = "GET /ITA/Default.aspx?SEZ=2&PAG=38&MOD=LINTRV HTTP/1.1\r\n";

$out .= "Host: www.atb.bergamo.it\r\n";

$out .= "Host: www.atb.bergamo.it\r\n";

$out .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2\r\n";

$out .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";

$out .= "Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3\r\n";

$out .= "Accept-Encoding: gzip, deflate\r\n";

$out .= "Connection: keep-alive\r\n";

$out .= $cookie."\r\n\r\n";

fwrite($fp, $out);

while (!feof($fp)) {

echo fgets($fp, 128);

}

//die($header."".$sessione);

fclose($fp);

}

>

我在本地服务器上运行脚本,server2go。我不知道为什么它不工作... 你能帮我吗?

+0

考虑使用[GOUTTE](https://github.com/fabpot/Goutte),这是一个PHP web的刮库。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值