标签归档:fsockopen

urlencode

[想做课表]以前想做一个学校的课表查询系统,通过小偷方式抓取学校教务处网站上的课表,可一直没有成功。现在,又开学了,看了看以前的代码,重新写了一遍,还是不行,怎么回事呢?

[原理]PHP并没有提供发出http请求的功能,只能使用cURL或用fsockopen模拟http请求。学校教务处的课表查询系统使用.NET写的,里面有一些验证机制,比如隐藏的__VIEWSTATE。

[郁闷]我将这些隐藏数据和其他的表单里的数据一起用fsockopen发送,得到的结果却是“此页的状态信息无效,可能已损坏”。上次也是遇到这样的问题,有同学用asp.net做却很正常。

[解决]上网查了别人写的一些代码,发现别人都会用对POST数据进行url编码,恍然大悟,修改自己的代码后,结果正常。

[总结]看来自己对http协议还是很不熟悉,以前就一直怀疑POST的数据有问题,就是没想到还要编码。学习学习……