当前位置:首页 > 知识

易语言post工具

用易语言写POST工具,易语言核心就三件事:抓包、易语言组包、易语言发出去。易语言别被那些花里胡哨的易语言界面迷惑,底层逻辑比你想的易语言简单得多。

我最早接触易语言POST,易语言是易语言帮朋友搞一个批量登录的小工具。当时用精易模块,易语言三行代码就能把数据甩到服务器上。易语言但真正踩坑的易语言地方不在代码本身,而在你根本不知道浏览器到底发了什么。易语言F12开发者工具里那个“复制为cURL”的易语言按钮,比任何教程都管用。易语言复制出来的易语言东西往易语言里一贴,改改参数就能跑。

说个具体案例。某网站登录接口,抓包看到提交的是JSON格式,字段有username、password、token。token藏在登录页的HTML里,得先用GET请求把页面拉下来,再用正则或者文本取中间批量提取。易语言的“文本_取中间_批量”命令这时候就派上用场了。很多人卡在token上,以为要什么加密算法,其实多数小网站就是明文塞在隐藏域里。

精易模块的“网页_访问”和“网页_访问_对象”是两码事。前者用IE内核,后者走WinHTTP。现在IE都进坟墓了,直接用对象版。有个细节:协yi头里的Content-Type必须和抓包一致。application/x-www-form-urlencoded和application/json混了,服务器直接给你返回400。我见过有人折腾一下午,最后发现是少了个分号。

Cookie处理更是个坑。易语言自带的Cookie管理有时候不灵,特别是遇到HttpOnly标记的。手动把Cookie塞进协yi头最稳。登录成功后返回的Set-Cookie,用“文本_取出中间文本”把关键字段抠出来,拼成“Cookie: xxx=yyy; zzz=www”的格式。别嫌麻烦,这比调试模块内部的Cookie池快得多。

编码问题能逼疯人。网页是UTF-8,易语言默认GBK,提交中文参数直接乱码。编码_URL编码 (“中文”, 真) 这个命令里的“真”代表UTF-8。反过来,服务器返回的UTF-8内容,用编码_Utf8到Ansi转一下再显示。有次我提交一个带“&”符号的参数,没做URL编码,服务器把&后面的内容当成了新参数,查了半天日志才发现。

多线程POST要小心。易语言的线程池不稳定,开50个线程跑批量,程序直接闪退。后来改成用“线程_启动”配合信号量控制并发数,稳多了。还有个土办法:把任务分成小批次,每批10个,跑完一批延时200毫秒。虽然慢点,但胜在稳定。毕竟工具是拿来用的,不是拿来炫技的。

超时设置别忽略。“网页_访问_对象”里有超时参数,单位是毫秒。默认值有时候是无限等待,网络一卡程序就假死。设成10000,十秒没响应就重试。重试次数别超过3次,否则容易被封IP。说到封IP,代理池是绕不过去的。易语言用“网页_访问_对象”的代理参数,格式是“http://ip:port”。免费代理十有九废,要么自己搭,要么买。

最后说个观察:很多人用易语言POST工具,其实要的不是工具本身,而是自动化带来的效率。但自动化之前,先手动把整个流程走通。用浏览器开发者工具看请求、看响应、看Cookie变化。手动能成功,代码才有意义。代码只是把手动操作翻译成机器指令,逻辑错了,代码再漂亮也是白搭。

分享到: