首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP爬虫-正方教务系统一键报名四六级

前言

在我们学校四六级也是在正方教务系统进行报名的,login页面是跟查询成绩绩点的差不多,就是添加了几个表单数据。

require页面中一点点区别,模拟登录和之前的成绩绩点爬取是一样的。在报名页面有个地方是很关键的。

正文

login_cet.php

login_cet.php页面跟login_grade.php是差不多的,获取到cookie和验证码保存到本地。

以下是提交表单界面

require_cet.php

在前言说到,模拟登录跟之前是一样的,加之目前学校已经关闭了报名页面,所以无法抓包。

Posting multipart form data using curl in PHP

如下代码demo

以上是一个简单的curl发送一个POST请求

这个demo的产生request如下

从以上代码中总结出的就是,在curl_setopt($ch, CURLOPT_POSTFIELDS, $post)这个函数中,

如果$post是字符串,则Content-Type是application/x-www-form-urlencoded。

如果$post是k=>v的数组,则Content-Type是multipart/form-data

在这里因为这个爬虫中,确定提交的POST包的Content-Type是multipart/form-data。

所以这里有用到这个知识点。代码如下:

以上的代码就可以实现提交确认POST数据报了,接下来我还做了个简单的判断,判断是否报名成功。

如果报名成功了,页面会有报名记录的。这里因为无法抓包,就只能根据代码说明了。

这里我没有使用正则匹配,用到的xpath定位。

代码如下:

其中的

是需要判断的xpath路径,更加匹配该地址的值来判断是否实现报名。

Github

https://github.com/uknowsec/CETCrawler

Reference

Posting multipart form data using curl in PHP.

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180323G1UEVJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券