如何使用PHP cURL登录ASP.NET网页?

时间:2017-10-17 23:54:51

标签: php asp.net curl login

我们的大学系统正在使用TCS(全校园解决方案),这是一个在线平台,通过用户名和密码登录来跟踪学生的出勤率和得分。

我想创建一个PHP脚本,如果已知用户名+密码,则会记录到他们的帐户并从HTML中提取内容。

这是因为TCS的供应商没有提供任何API来访问他们的数据库。

以下是网站:http://117.232.108.164/OnlineTCS/Login.aspx

用户名:b14080

密码:b14080 (*我在这里给它,因为网站没有任何敏感信息并且是只读的)

以下是我的示例PHP cURL脚本:

<?php
$login_url = 'http://117.232.108.164/OnlineTCS/Login.aspx';

//These are the post data username and password
$post_data = 'ddlInstitution_ddl=KMEA Engineering College&ddlAcademicYear_ddl=2017-2018&txtUserName_txt=b14080&txtPassword_txt=b14080';

//Create a curl object
$ch = curl_init();

//Set the useragent
$agent = 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31';
curl_setopt($ch, CURLOPT_USERAGENT, $agent);

//Set the URL
curl_setopt($ch, CURLOPT_URL, $login_url );

//This is a POST query
curl_setopt($ch, CURLOPT_POST, 1 );

//Set the post data
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

//We want the content after the query
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Follow Location redirects
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

/*
Set the cookie storing files
Cookie files are necessary since we are logging and session data needs to be saved
*/

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');

//Execute the action to login
$postResult = curl_exec($ch);

echo $postResult;
?>

$ postResult仅显示登录页面的HTML。为什么以及如何做到这一点

1 个答案:

答案 0 :(得分:1)

您的帖子数据密钥不正确 你缺少一些帖子字段

我将请求分成两个单独的请求,而不是使用CURLOPT_FOLLOWLOCATION,真实

我从第一个请求中获取cookie(使用302重定向)
然后将cookie传递给重定向URL。

我将HTML作为纯文本返回,因为该页面是使用JavaScript生成的。对于HTML,将标题从text / plain更改为button { background: transparent; border: 0; } button:focus { outline: transparent; }



此代码经过测试并正常运行(调试代码已注释掉):

header('Content-Type: text/html; charset=utf-8');