常见的表单安全措施及应对策略

一 隐含输入字段值

  字段的值对浏览器可见,但是对用户不可见。隐含字段主要用于阻止爬虫自动提交表单。

  用隐含字段阻止网络数据采集的方式主要有两种:

  第一种是表单页面上的一个字段可以用服务器生成的随机变量表示。如果提交时这个值不在表单处理页面上,服务器就有理由认为这个提交不是从原始表单页面上提交的,而是由一个网络机器人直接提交到表单处理页面的。绕开这个问题的最佳方法就是,首先采集表单所在页面上生成的随机变量,然后再提交到表单处理页面。

  第二种方式是‘蜜罐’(honey pot)。如果表单包含一个具有普通名称的隐含字段(设置蜜罐圈套),比如‘username’或‘email address’,设置不太好的网络机器人往往不管这个字段是不是对用户可见,直接填写这个字段并向服务器提交,这样就会中服务器的蜜罐圈套。服务器会把所有含隐含字段的真实值都忽略。

二 避免蜜罐

  方法 1 :

    看懂返回的前端html代码

  方法 2:

    使用selenium,通过is_displayed()可以判断元素在页面上是否可见。

fields = driver.find_elements_by_tag_name('input')
for field in fields:
    if not field.is_displayed():
        xxx

三 应对,问题检查表

  1 如果你从网络服务器收到的页面是空白的,缺少信息,或遇到其他不符合你预期的情况(或者不是你在浏览器上看到的内容),有可能是因为网站创建页面的JavaScript执行有问题。推荐selenium

  2 如果你准备向网站提交表单或发出POST请求,记得检查一下页面的内容,看看你想提交的每个字段是不是都已经填好,而且格式也正确。用Chrome浏览器的网络面板查看发送到网站的POST命令,确认你的每个参数都是正确的

  3 如果你已经登录网站却不能保持登录状态,或者网站上出现了其他的‘登录状态’异常,请检查你的cookie。确认在加载每个页面是cookie都被正确调用,而且你的cookie在每次发起请求时都发送到了网站上。

  4 如果你在客户端遇到了HTTP错误,尤其是403禁止访问的错误,这可能说明网站已经把你的IP当做机器人了,不再接受你的任何请求。你要么等待你的IP地址从网站黑名单里移除,要么就换个IP地址。如果你确定自己并没有被封杀,那么在检查下面的内容。

  5 确认你的爬虫在网站上的速度不是特别快。快速采集是一种恶习。

  6 还有一件必须做的事情,修改你的请求头!

  7 确认你没有点击或访问任何人类用户通常不能点击或接入的信息。

原文地址:https://www.cnblogs.com/654321cc/p/8884697.html