我们的大学系统正在使用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。为什么以及如何做到这一点
答案 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');