公司项目管理系统用的PowerProject,不懂这玩意用的公司多不多,反正我觉得挺难用的
报工页面让我极其难受,点个报工条目要等半天,所以决定抓个包看一下http请求直接用代码跑
要搞个自动报工,那自然登录啥的也得安排上,不然怎么算自动报告。
所以第一步咱们先做登录。
话不多说反正先F12登录界面
盲猜一下登录url可能是 login?user=xxx&password=xxx
抓个包试
果然没那么简单,好家伙密码和验证码竟然都做了加密,这长度,反正不是初学做业务系统时喜欢用的md5加密,而且还得传验证码,靠,以前老师不是说验证码就是用来页面上验证的吗,怎么要传到后台了
该不会死在这一步了吧。
偷看了一眼登录的源码
好的这该死的用的是rsa加密,似乎只需要一个公钥,果断打上断点看看公钥是啥
搞到公钥了,而且从源码上看,他用公钥对验证码和密码都做了加密。
加密算法搞到了,登录请求也搞到了,现在登录请求还差一个参数,就是验证码,这狗东西咋整。
继续抓包试试
点了一下验证码,果然,这tm也是像后台请求的。
懂了,这玩意就是跟这次登录会话绑定的
行吧,那我的还得搞的验证码自动识别呗,而且全是数字的验证码看起来简答 #本想自己训练一个出来,直到我在百度找到了一个验证码识别模块,直接用呗
<!-- tess4j用于识别验证码-->
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.4.0</version>
</dependency>
tess4j直接安排上
当然这玩意要附带他训练好的模型
public class ValidCode {
private ITesseract instance;
/**
* [url=home.php?mod=space&uid=952169]@Param[/url] languagePath 语言库地址
* @param language 语言,语言库文件的开头
*/
public ValidCode(String languagePath, String language) {
instance = new Tesseract();
//设置训练库的位置
instance.setDatapath(languagePath);
//chi_sim :简体中文, eng 根据需求选择语言库
instance.setLanguage(language);
}
public String ocr(String path) {
File file = ne