网页抓取 加密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的程序员……