【问题标题】:Can spam robots read client-side rendered content?垃圾邮件机器人可以读取客户端呈现的内容吗?
【发布时间】:2020-11-04 20:45:31
【问题描述】:

我想使用 React.js 向垃圾邮件机器人隐藏我的电子邮件链接。我的想法是将电子邮件链接放入 <div> 中,只有在有人单击触发按钮(如下拉菜单)时才会呈现。因此它只在客户端呈现(因此至少 Google 爬虫应该无法读取它)。

此外,链接的组件(将是下拉组件的子组件)如下所示:

import React, { useState, useEffect } from 'react';
import PropTypes from 'prop-types';
import './styles.scss';

const LinkEmail = ({ user, domain, tld }) => {
  const [finalLink, setFinalLink] = useState('');

  useEffect(() => {
    setFinalLink(`mailto:${user}@${domain}.${tld}`);
  }, []);

  return (
    <a
      href={finalLink}
      className='link-email'
      data-user={user}
      data-domain={domain}
      data-tld={tld}
    />
  );
}

LinkEmail.propTypes = {
  user: PropTypes.string.isRequired,
  domain: PropTypes.string.isRequired,
  tld: PropTypes.string.isRequired,
};

export default LinkEmail;

通过这种方式,我尝试通过额外的渲染迭代来保护渲染的电子邮件地址。

链接的用户可读文本将使用 SASS 组合在一起:

.link-email {
  &:before {
    content: attr(data-user) "@";
  }

  &:after {
    content: attr(data-domain) "." attr(data-tld);
  }
}

你觉得我的解决方案怎么样?这个防御计划对垃圾邮件机器人是否足够有效?我错过了什么吗?有什么我可以改进来增加保护的吗?

提前致谢

【问题讨论】:

  • 不幸的是,如果刮板设计得足够智能,任何事情都可以绕过

标签: reactjs spam-prevention


【解决方案1】:

通用抓取工具可能不会“点击”用户界面中的每个按钮,因此它可以工作,但它们可以抓取所有属性值并将它们解析为电子邮件 - 例如。

一种快速的解决方案是将混淆后的电子邮件存储在属性中,并在点击时对其进行转换。

您可以查看电子邮件混淆,但请记住,有很多观点和不同观点的文章: Best way to obfuscate an e-mail address on a website?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-13
    • 2014-05-19
    • 2013-08-06
    • 1970-01-01
    • 2011-07-05
    • 2011-08-03
    • 2010-10-01
    • 2013-05-05
    相关资源
    最近更新 更多