网页抓取 加密html(最偷懒的做法就是,把http_referer赋值为你的网站根url或访问的页面url)

优采云 发布时间: 2022-02-22 23:03

  网页抓取 加密html(最偷懒的做法就是,把http_referer赋值为你的网站根url或访问的页面url)

  http_referer 是 http 标头中的一个部分。无论是使用VB/VC的winsock/inet传输控制,asp服务器可以使用的xmlHttpRequest对象(用于ajax),还是php socket或python urllib2,都可以轻松修改http头,从而直接修改http_referer的值。最懒惰的方法是将 http_referer 分配给您的 网站 根 url 或访问过的页面 url。VB中的WebBrowser控件就没有这个问题了……抓得慢是件大事。

  此方法仅对使用 Adodb.Stream 对象的提取有效

  2 添加随机字符串/站点名称/url

  对于固定的字符串,比如站点的名称和url,很多网页采集程序直接提供了可以替换的选项,实现起来也很简单。由于涉嫌在页面上放置隐形元素、堆砌关键词,采集针对的一方也可能被搜索引擎视为作弊,不可取~

  对于随机字符串,不能直接用字符串替换,但是如果结合页面源码合理使用正则表达式,是可以破解的。例如:匹配 [w]{,16}

  , 将其替换为空,即可删除

  前一个 16 位随机字母数字字符串

  3 给网页添加一个可以中断页面运行的脚本

  将诸如此类的脚本添加到网页以阻止页面执行和显示。想出这个方法的小哥一定很bt~不过有点可笑。只要抓取后不直接显示页面,这种方法根本没用。没有更具体的原因。这对于 采集party网站 的用户体验来说是一个不好的方面。

  -------------------------------------------------- -------------------------------------------------- --------

  4 我的方法

  几天前,我要求写一个放 采集 的程序。要求打印的内容列表页受到 采集 保护。想了想,觉得只有一个办法,就是打乱表格的输出顺序,使用随机顺序输出,在客户端用js操作DOM来改变顺序。这样,服务端输出的html中的表格很乱,但是在客户端查看和打印时却可以正常显示。缺点是页面上仍然需要输出正确的顺序。如果 采集 方也按照此规则重新排序表格内容,仍然可以读取。

  实现方法如下

  我 = 我 + 1

  环形

  %>

  客户端重组方法如下:

  函数 reOrder(sObj, aOrder)

  ...{

  var o = document.getElementById(sObj).childNodes[0];

  ...{

  尝试...{

  var t = o.childNodes.length;

  }赶上(E)...{

  警报(E.description);

  返回;

  }

  }

  for(var i = 1; i < o.childNodes.length ;i++)...{

  var aReOrder = new Array();

  var tr = o.childNodes[i];

  for(var j = 0; tr.hasChildNodes() ;j++)...{

  aReOrder[aOrder[i][j]] = tr.removeChild(tr.childNodes[0]);

  }

  for(var j = 0; j < aReOrder.length;j++)...{

  tr.appendChild(aReOrder[j]);

  }

  }

  }

  虽然这不是一个完全一劳永逸的方法,但至少可以难倒一大批不懂js的程序员……

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线