我很确定很多人都想过这个,但由于某些原因我无法使用Google和StackOverflow搜索找到它.
我想将一个看不见的链接(由robots.txt列入黑名单)到一个CGI或PHP页面,它将"陷阱"恶意机器人和蜘蛛.到目前为止,我已经尝试过:
身体中的空链接:
<a href='/trap'><!-- nothing --></a>
Run Code Online (Sandbox Code Playgroud)
这大部分时间都很好用,有两个小问题:
问题:链接是文档正文的一部分.即使用鼠标几乎无法点击,一些访问者仍然无意中击中了键盘 - 用Tab和导航网站Enter.此外,如果他们将页面复制粘贴到文字处理器或电子邮件软件中,例如,陷阱链接被复制,有时甚至可以点击(某些软件不喜欢空<a>标签并将href复制为文本的内容)标签).
体内隐形块:
<div style="display:none"><a href='/trap'><!-- nothing --></a></div>
Run Code Online (Sandbox Code Playgroud)
这解决了键盘导航的问题,至少在我测试的浏览器中.从页面的正常显示中有效地无法访问该链接,而对于大多数具有当前智能水平的蜘蛛机器人仍然完全可见.
问题:链接仍然是DOM的一部分.如果用户复制粘贴页面的内容,则会再次出现.
内部评论栏:
<!-- <a href='/trap'>trap</a> -->
Run Code Online (Sandbox Code Playgroud)
这有效地从页面的DOM中删除了链接.从技术上讲,注释仍然是DOM的一部分,但它实现了合规用户代理不会生成A元素的预期效果,因此它不是实际链接.
问题:现在大多数蜘蛛机器人都足够聪明,可以解析(X)HTML并忽略评论.我个人看到机器人使用Internet Explorer COM/ActiveX对象来解析(X)HTML并通过XPath或Javascript提取所有链接.这些类型的机器人不会陷入跟踪陷阱超链接.
直到昨晚我才使用方法#3,当时我被一群机器人击中,这些机器人似乎对他们所遵循的链接非常有选择性.现在我回到方法#2,但我仍然在寻找一种更有效的方法.
我错过了任何建议,或其他不同的解决方案?
我知道每个进程都创建了自己的内存地址空间,不过我想知道,
如果进程A具有如下函数:
int DoStuff() { return 1; }
Run Code Online (Sandbox Code Playgroud)
和指针typedef,如:
typedef int(DoStuff_f*)();
Run Code Online (Sandbox Code Playgroud)
和一个getter函数,如:
DoStuff_f * getDoStuff() { return DoStuff; }
Run Code Online (Sandbox Code Playgroud)
和一个通过...进行通信的神奇方式...说boost :: interprocess
是否可以将函数指针传递给进程B并调用
直接从流程B处理A的DoStuff?
我想在这里咨询关于Qt和皮肤的圣人,得到你的意见并为我的发展规划一条道路.我的要求如下:
我的Qt/C++应用程序(具有Mac,Windows和Linux版本的跨平台)需要具有模块化外观.
皮肤被定义为一组一个或多个元素: - 窗口背景纹理 - UI控件的外观/感觉,例如编辑框,下拉列表,单选按钮,按钮等. - 窗口"标题"的外观/感觉,调整大小夹点等等
皮肤将与应用程序安装程序一起安装,允许用户选择他/她想要使用的皮肤.用户应该能够动态更改皮肤.
我可以去QML路线吗?应该是自定义的还是基于应用程序内置的简单资源?任何设计建议将不胜感激.
谢谢.
QMessageBox::about( this, "About Application",
"<h4>Application is a one-paragraph blurb</h4>\n\n"
"Copyright 1991-2003 Such-and-such. "
"For technical support, call 1234-56789 or see\n"
"<a href=\"http://www.such-and-such.com\">http://www.such-and-such.com</a>" );
Run Code Online (Sandbox Code Playgroud)
此代码创建了我想要的About消息框,但有两个例外:
1)我想用aaa.png文件更改消息框中的图标
2)我希望链接可以点击.它看起来像超链接(它是蓝色和下划线)但鼠标单击不起作用
有任何想法吗?
我有一个带行的文本文件
default_color acolor
Run Code Online (Sandbox Code Playgroud)
我想用这个替换这一行
default_color anothercolor
Run Code Online (Sandbox Code Playgroud)
我不知道第一种颜色,第二种颜色包含在变量中.我怎么能用bash做呢?
谢谢
4096的输出意味着什么ls -l?
[root@file nutch-0.9]# du -csh resume.new/
2.3G resume.new/
[root@file nutch-0.9]# ls -l
total 55132
drwxr-xr-x 7 root root 4096 Jun 18 03:19 resume.new
Run Code Online (Sandbox Code Playgroud) location pick(void){ // generates a random location
location get;
get.x = rand() % FIELD_SIZE + 1;
int forY = rand() % FIELD_SIZE +1;
switch(forY){
case 1:
get.y = 'a';
break;
case 2:
get.y = 'b';
break;
case 3:
get.y = 'c';
break;
case 4:
get.y = 'd';
break;
case 5:
get.y = 'e';
break;
}
}
Run Code Online (Sandbox Code Playgroud) Noob to C++.
我正在尝试获取用户输入(姓氏,名字中间名),更改部分(中间名称为中间名称),然后重新排列它(First Middle Initial Last).
我在哪里弄乱我的代码?
- 谢谢你尽你所能的帮助!
...
#include <iostream>
using std::cout;
using std::cin;
#include <string>
using std::string;
int main()
{
string myString, last, first, middle;
cout << "Enter your name: Last, First Middle";
cin >> last >> first >> middle;
char comma, space1, space2;
comma = myString.find_first_of(',');
space1 = myString.find_first_of(' ');
space2 = myString.find_last_of(' ');
last = myString.substr (0, comma); // user input last name
first = myString.substr (space1+1, -1); // user input first name
middle …Run Code Online (Sandbox Code Playgroud)