有一个scrapebot-proof form。 登录&密码输入具有模糊的名称属性:
<input id="login-username" name="r0pUsRqARu" value=""
type="text" class="form-control" placeholder="Login">
根据这些输入(包括登录名和密码值)和隐藏字符串输入字段,哈希值由客户端按js功能(md5.js)生成。
$("#btn-login").click(function(){
var ser = $( "#loginform" ).serialize();
$.post("/post.php",ser+"&hash="+md5(ser),function(){
location.replace("/logged.php");});
});
表单已序列化,并作为POST xhr(ajax)发送到 post.php 以进行登录(请参阅上面的代码)。
我想编写 php脚本以自动通过表单登录。
在服务器上获取表单,获取名称属性,粘贴登录/密码值以及通过POST xhr请求带有序列化字符串的 /post.php 没问题。
cV2sD3JzH2=login&3JX2zJ7QlC=password&char=%C2%AA&hash=...
然而,由于哈希是由js (由md5.js)在客户端生成的,我不能通过php生成哈希服务器端 ...什么是出路?
一些想法:
抱歉,我一直以为我可以获取混淆的名称属性值和 char 输入值服务器端。然而,正如 RamRaider 所提到的,当禁用javascript时,html中的without javascript enabled they are named *email* and *password*
并且没有隐藏的 char 输入。
因此,当使用php cUrl(没有js服务器端)获取内容时,我有一个 clean form 而没有隐藏的 char 输入和未经模糊处理的名称值,请参阅下面的内容(删除样式) ):
<form id="loginform" method="post" action="/post.php">
<input id="login-username" type="text" name="email" value="" >
<input id="login-password" type="password" name="password" >
<a id="btn-login" href="#" class="btn btn-success">Login </a>
</form>
再一次在服务器端无用的JS技巧。我该如何解决?
我正在搜索JS插入某个新属性值,但是徒劳无功。它应该是smth。如下:
$('login-form').attr('name', <new value>);
答案 0 :(得分:1)
在那里使用的md5.js
来自何处以及该文档所针对的地方并不明显。因此,您有以下选择:
我建议您从第一个选项开始,因为这是最简单的方法,可以立即判断它们是否是相同的算法。