小编Jul*_*ano的帖子

使链接完全不可见?

我很确定很多人都想过这个,但由于某些原因我无法使用Google和StackOverflow搜索找到它.

我想将一个看不见的链接(由robots.txt列入黑名单)到一个CGI或PHP页面,它将"陷阱"恶意机器人和蜘蛛.到目前为止,我已经尝试过:

  1. 身体中的空链接:

    <a href='/trap'><!-- nothing --></a>
    
    Run Code Online (Sandbox Code Playgroud)

    这大部分时间都很好用,有两个小问题:

    问题:链接是文档正文的一部分.即使用鼠标几乎无法点击,一些访问者仍然无意中击中了键盘 - 用Tab和导航网站Enter.此外,如果他们将页面复制粘贴到文字处理器或电子邮件软件中,例如,陷阱链接被复制,有时甚至可以点击(某些软件不喜欢空<a>标签并将href复制为文本的内容)标签).

  2. 体内隐形块:

    <div style="display:none"><a href='/trap'><!-- nothing --></a></div>
    
    Run Code Online (Sandbox Code Playgroud)

    这解决了键盘导航的问题,至少在我测试的浏览器中.从页面的正常显示中有效地无法访问该链接,而对于大多数具有当前智能水平的蜘蛛机器人仍然完全可见.

    问题:链接仍然是DOM的一部分.如果用户复制粘贴页面的内容,则会再次出现.

  3. 内部评论栏:

    <!-- <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,但我仍然在寻找一种更有效的方法.

我错过了任何建议,或其他不同的解决方案?

html web-crawler hyperlink

9
推荐指数
1
解决办法
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?

c++ boost ipc

7
推荐指数
2
解决办法
4918
查看次数

Qt和UI Skinning

我想在这里咨询关于Qt和皮肤的圣人,得到你的意见并为我的发展规划一条道路.我的要求如下:

  1. 我的Qt/C++应用程序(具有Mac,Windows和Linux版本的跨平台)需要具有模块化外观.

  2. 皮肤被定义为一组一个或多个元素: - 窗口背景纹理 - UI控件的外观/感觉,例如编辑框,下拉列表,单选按钮,按钮等. - 窗口"标题"的外观/感觉,调整大小夹点等等

  3. 皮肤将与应用程序安装程序一起安装,允许用户选择他/她想要使用的皮肤.用户应该能够动态更改皮肤.

我可以去QML路线吗?应该是自定义的还是基于应用程序内置的简单资源?任何设计建议将不胜感激.

谢谢.

qt

6
推荐指数
1
解决办法
1万
查看次数

带有Qt的GUI的"关于"消息框

    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)我希望链接可以点击.它看起来像超链接(它是蓝色和下划线)但鼠标单击不起作用

有任何想法吗?

c++ user-interface qt qt4 messagebox

5
推荐指数
1
解决办法
3623
查看次数

替换文本文件中的一行

我有一个带行的文本文件

default_color acolor
Run Code Online (Sandbox Code Playgroud)

我想用这个替换这一行

default_color anothercolor
Run Code Online (Sandbox Code Playgroud)

我不知道第一种颜色,第二种颜色包含在变量中.我怎么能用bash做呢?

谢谢

bash shell sed file

4
推荐指数
1
解决办法
3452
查看次数

运行ls -l时,为什么目录上的filesize与du的输出不匹配?

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)

linux filesystems

3
推荐指数
2
解决办法
3897
查看次数

我一直控制到达无效功能的结束.我究竟做错了什么?

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)

c++ function

2
推荐指数
2
解决办法
4238
查看次数

在C ++中将文件名作为参数传递

我必须在c ++程序的参数中传递四个不同的文本文件。我如何通过??

c++

1
推荐指数
1
解决办法
3069
查看次数

简单的C++代码(这里有什么问题?)

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)

c++

0
推荐指数
2
解决办法
2238
查看次数

标签 统计

c++ ×5

qt ×2

bash ×1

boost ×1

file ×1

filesystems ×1

function ×1

html ×1

hyperlink ×1

ipc ×1

linux ×1

messagebox ×1

qt4 ×1

sed ×1

shell ×1

user-interface ×1

web-crawler ×1