欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP如何模拟登录学校个人门户?

程序员文章站 2022-05-08 15:20:36
...
sso.ctgu.edu.cn:7002/ca

用户名:2010138112
密码:15872474165

如题所示,模拟登录获取个人信息。求高手给出源代码

回复内容:

泻药
建议连同酬劳一并写入提问当中。 之前写过一个,基本上和你的需求是一样的,给你参考自己写吧。

Crawl/identifyCode at master · Tairy/Crawl · GitHub

这种模拟登陆其实很简单,php的话主要用curl来实现。仔细研究一下你要抓的站具体是怎么实现用户登录的,可以用wireshark或者burpsuite(建议用后者)抓包看看整个过程都有那几次请求,每次请求都发送了哪些数据,构造好发给他就可以实现登录了。

之后获取个人信息就很容易了,找找php解析html库,或者最简单粗暴的就是字符串截取函数加正则表达式,把你想要的数据提取出来就好了。

对于你给出的这种验证码属于非常容易识别的验证码了,基本的识别原理参看使用Canvas进行验证码识别

当然比较蛋疼的问题就是网页编码问题,经常爬过来全是乱码,网上找找看转码的方法,都试一下,这是一门玄学,能不能成功看你人品和耐心吧。

我这个repo里面基本上实现了上面的一套流程,你可以参照着写吧!

最后还想说的是,爬站还是用python吧,request+beautifulsoup不是一般的好用。做这个php真不擅长。虽然我依然认为php是世界上最好的语言!!!(如果你想用python或者其他的写的话看看我这个repo里面的其他目录,我在readme里面写清楚的)。 之前写过一个模拟登录我们学校门户网站的PHP程序,当时主要是为了抓取学生成绩信息计算出学分积,而且我们的门户网站没有验证密码,所以就简单了很多,鉴于你这个有验证码,就会涉及到图片验证码的识别,这个恐怕你得找个识别率高的识别算法才能搞定了,我就简单说下模拟登录的步骤,分析下你们那个网页的登录过程,找到登录时的表单,然后把帐号,密码和验证码参数都填好提交表单,然后一步一步分析登录过程,一般都会跳转好几次,还有可能是跨域名的跳转,所以最好每次都更新下cookie,直到转到有需要信息的页面,后面每次get页面时记得带上cookie就好... 使用 firefox,chrome,safari 之类的主流浏览器看一下请求头。
然后用 php 的 curl 模拟请求。
curl_setopt($ch, CURLOPT_HTTPHEADER, $HttpHeaderArray); 这种问题应该去Google百度,而不是在这提,网上一大堆的答案 curl,搞个cookie,设置下浏览器标识,还有什么referer,你的问题听起来没多难,写起来不知道那个网站防止自动登陆的代码到底怎样,要一个一个试,尤其是一些ajax操作,参数裹在一堆js里,少传一个参数给你一个error,说到底是个体力活。 戳开后发现有验证码,好吧… 你要多加一步验证码识别的模块,然后全部post到接口就应该能行了 简单的办法是用curl,不会先百度一下吧,一个晚上怎么都搞清楚了。然后先用浏览器抓包分析下,搞清楚request和response,然后就可以写代码去实现了。验证码能写出识别算法就写吧,写不出来就把验证码抓下来手填吧=_= 爬虫思维