我已经接受了答案,但遗憾的是,我相信我们仍然坚持我们最初的最坏情况:CAPTCHA每个人都在购买废话的尝试.简短说明:缓存/ Web场无法跟踪命中,任何解决方法(发送非缓存的Web信标,写入统一表等)都会使网站的速度比机器人更慢.思科等可能有一些昂贵的硬件可以提供高水平的帮助,但如果每个人都可以选择CAPTCHA,那么很难证明成本是合理的.我稍后会尝试更全面的解释,以及为未来的搜索者清理它(尽管欢迎其他人尝试,因为它是社区维基).
这是关于woot.com上的包装销售情况.我是Woot Workshop的总裁,Woot是Woot的子公司,负责设计,撰写产品说明,播客,博客文章以及审核论坛.我使用CSS/HTML,我只是熟悉其他技术.我与开发人员密切合作,并在这里讨论了所有答案(以及我们已经拥有的许多其他想法).
可用性是我工作的重要组成部分,使网站令人兴奋和有趣是其余部分.这就是下面三个目标的来源.CAPTCHA损害了可用性,机器人从我们的垃圾销售中窃取了乐趣和兴奋.
对于随机垃圾销售,机器人在第二次屏幕抓取(和/或扫描我们的RSS)时数十次关闭我们的头版.他们看到的那一刻,它触发了登录程序的第二阶段,点击我想要一个,填写表格,并购买废话.
lc:在stackoverflow和其他使用此方法的站点上,它们几乎总是处理经过身份验证的(已登录)用户,因为正在尝试的任务需要这样做.
在Woot上,匿名(未登录)用户可以查看我们的主页.换句话说,砰击机器人可以是非认证的(并且除了IP地址之外基本上是不可跟踪的).
所以我们又回到了扫描IP,其中a)在这个云网络和spambot僵尸时代相当无用,以及b)因为来自一个IP地址的企业数量而吸引了太多的无辜者(更不用说与非静态IP ISP和潜在的性能命中试图跟踪这个).
哦,让人们打电话给我们将是最糟糕的情况.我们可以让他们打电话给你吗?
BradC:Ned Batchelder的方法看起来很酷,但它们的设计非常坚固,可以击败为网站构建的机器人.我们的问题是机器人是专门为打败我们的网站而构建的.其中一些方法可能会在很短的时间内工作,直到脚本编写者发展他们的机器人忽略蜜罐,屏幕刮擦附近的标签名称而不是表单ID,并使用支持javascript的浏览器控件.
lc:"当然,除非炒作是你营销计划的一部分." 是的,肯定是.当项目出现时的惊喜,以及如果你设法获得一个项目的兴奋可能与你最终得到的垃圾一样重要或更重要.任何消除先到先得的东西都不利于"赢得"垃圾的快感.
novatrust:我是一个人,欢迎我们新的机器人霸主.我们实际上提供RSSfeeds以允许第三方应用程序扫描我们的网站以获取产品信息,但不会超出主站点HTML.如果我正确地解释它,你的解决方案确实通过完全牺牲目标1来帮助目标2(性能问题),并且只是辞去机器人将购买大部分垃圾的事实.我对你的回复进行了投票,因为你的最后一段悲观情绪对我来说是准确的.这里似乎没有银弹.
其余的响应通常依赖于IP跟踪,再次,这似乎无用(使用僵尸网络/僵尸/云网络)和有害(捕获来自同一IP目的地的许多无辜者).
还有其他方法/想法吗?我的开发人员一直在说"我们只是做CAPTCHA",但我希望所有真正想要我们废话的人都会采用较少侵入性的方法.
假设您正在销售具有很高感知价值的便宜货,并且您的数量非常有限.没有人确切知道你何时会出售这件物品.超过一百万人经常来看看你卖的是什么.
你最终会得到脚本编写者和机器人试图以编程方式[a]弄清楚你卖的东西,并且[b]确保他们是第一个购买它的人.这很糟糕有两个原因:
一个看似显而易见的解决方案是为您的用户创建一些环节,以便在下订单之前跳过,但至少有三个问题:
另一种解决方案是监视IP经常发生的攻击,阻止它们进入防火墙,或以其他方式阻止它们进行排序.这可以解决2.并且防止[b],但是扫描IP的性能是巨大的,并且可能会导致比脚本编写者自己造成的更多问题.此外,云网络和spambot僵尸的可能性使IP检查相当无用.
第三个想法,迫使订单表格被加载了一段时间(比如说,半秒钟)可能会减慢快速订单的进度,但同样,脚本编写者仍然会成为第一批人,无论如何都不会对实际用户.
我编写了数据库模式(到目前为止只有一个表),并在一个文件中编写了该表的INSERT语句.然后我创建了数据库,如下所示:
$ sqlite3 newdatabase.db
SQLite version 3.4.0
Enter ".help" for instructions
sqlite> .read ./schema.sql
SQL error near line 16: near "s": syntax error
Run Code Online (Sandbox Code Playgroud)
我的文件的第16行看起来像这样:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
Run Code Online (Sandbox Code Playgroud)
问题是单引号的转义字符.我也试过双重转义单引号(使用\\\'而不是\'),但这也不起作用.我究竟做错了什么?
我需要选择Windows自动化脚本语言.你推荐哪一个; AutoIt,AutoHotkey还是其他?
我读过" An AutoIt/AutoHotkey比较 ".有趣的历史,但没有推荐.搜索谷歌大约有312,000次点击,而AutoHotkey Windows对于482k AutoIt Windows.在Stack Overflow上有15个问题标记为autoit vs 18 autohotkey.
我对程序员的看法很感兴趣.您认为哪一个更易于使用,更易于部署且功能更强大?我已经将AutoHotkey用于个人用途,所以我最初的偏好就是这个.
让我们说以下是我网站的DIR结构

现在在index.html我可以简单地参考图像
<img src="./images/logo.png">
Run Code Online (Sandbox Code Playgroud)
但是如果我想sub.html在src中引用相同的图像呢?
我在创建mysql数据库中现有表的外键时遇到了一些问题.
我有桌子exp:
+-------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+-------+
| EID | varchar(45) | NO | PRI | NULL | |
| Comment | text | YES | | NULL | |
| Initials | varchar(255) | NO | | NULL | |
| ExpDate | date | NO | | NULL | |
| InsertDate | date | NO | | NULL | |
| inserted_by | int(11) unsigned …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个Python库,用于从一组字符串中查找最长的公共子字符串.有两种方法可以解决这个问题:
实施的方法并不重要.重要的是它可以用于一组字符串(不仅仅是两个字符串).
机器人,他们是如何工作的?他们是否告诉视频游戏按下了键或点击了鼠标?
如果没有,是否有办法让你的程序告诉另一个程序按下了一个键?我想做一个程序来击败一些游戏.因此,任何资源或示例都受到赞赏.
更新:所以一种方法是模拟击键,那么有什么方法可以做到这一点(用任何语言)?
谷歌搜索定义要么返回面向列的数据库的结果,要么给出非常模糊的定义。
我的理解是宽列存储由列族组成,列族由行和列组成。所述系列中的每一行都一起存储在磁盘上。这听起来像是面向行的数据库存储数据的方式。这让我想到了我的第一个问题:
宽列存储与常规关系数据库表有何不同?这是我的看法:
* column family -> table
* column family column -> table column
* column family row -> table row
Run Code Online (Sandbox Code Playgroud)
这张来自Database Internals 的图片看起来就像两个普通表:
我对有什么不同的猜测来自这样一个事实,即沿边宽的列商店提到了“多维地图”。所以这是我的第二个问题:
宽列存储是否从左到右排序?意思是,在上面的例子中,行是先按Row Key,然后按Timestamp,最后按Qualifier?
我将在Visual Studio 2008中编写代码,最终我犯了一个错误.我按CTRL- Z撤消和没有发生.我不是在谈论任何复杂的事情,比如撤消搜索并替换多个未打开的文件.我正在谈论撤消剪切和粘贴操作,或只是键入文本.
这令人沮丧,你知道任何解决方法吗?
我经常保存,所以通常我可以关闭文件,重新打开它,撤消功能再次起作用.然后,最终(也许在20秒内,也许在一个小时内,也许根本没有),再次撤消休息.这真的很烦人,因为当我必须关闭并重新打开文件时,我会丢失我的位置,思路,窗口大小和位置以及分割窗格位置.
可能有用的细节:
我还没有采取痛苦和恼人的故障排除步骤,恢复到精简的Visual Studio 2008安装(默认选项,没有插件),并慢慢建立备份,直到我开始遇到问题.
在此之前我想看看是否有其他人经历过这个并修复它.
因此,有CTRL- Z没有停下为你工作?你修好了吗?
我做了一些愚蠢的事情,因为这实际上是一个功能吗?比如,也许是我不小心碰到的一些热键或我正在采取的一些动作禁用撤消?
bots ×2
scripting ×2
autohotkey ×1
autoit ×1
automation ×1
detection ×1
directory ×1
e-commerce ×1
escaping ×1
foreign-keys ×1
html ×1
indexing ×1
mysql ×1
python ×1
rdms ×1
reference ×1
sqlite ×1
src ×1
string ×1
subdirectory ×1
windows ×1