小编Jav*_*cMD的帖子

检测诚实的网络爬虫

我想检测(在服务器端)哪些请求来自机器人.我现在不关心恶意机器人,只关注那些玩得很好的机器人.我见过一些主要涉及将用户代理字符串与'bot'等关键字匹配的方法.但这似乎很尴尬,不完整,不可维护.那么有没有人有更坚实的方法?如果没有,您是否拥有用于跟上所有友好用户代理的最新资源?

如果你很好奇:我不打算对任何搜索引擎政策做任何事情.我们有一个网站的部分,其中用户随机呈现一个页面的几个略有不同的版本之一.但是,如果检测到Web爬网程序,我们将始终为它们提供相同的版本,以使索引保持一致.

我也在使用Java,但我认为这种方法对于任何服务器端技术都是类似的.

c# bots web-crawler

36
推荐指数
4
解决办法
2万
查看次数

泽西岛:在泽西岛根外重定向

我一直在编写一个原型Jersey(JAX-RS)应用程序,并希望尝试使用postirect-after-POST方法处理application/x-www-form-urlencoded帖子.

我希望在成功时重定向到应用程序root上托管的html页面,但是我似乎无法逃脱Jersey的 servlet根目录.

以下是允许您创建新用户的资源示例:

我想要的URI:/jersey-test/user.html

我得到的URI:/ jersey-test/r /user.html

@POST
@Consumes({MediaType.APPLICATION_FORM_URLENCODED})
public Response putUser(@Context UriInfo uriInfo, 
    MultivaluedMap<String, String> formParams) {

    // snip... do work and insert user here...

    URI uri = uriInfo.getBaseUriBuilder().path("user.html").build();
    return Response.seeOther(uri).build();
}
Run Code Online (Sandbox Code Playgroud)

我的web.xml中的相关摘要:

<web-app ...>
  <display-name>jersey-test</display-name>
  ...
  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    ...
  </servlet>
  ...
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/r/*</url-pattern>
  </servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

java jax-rs jersey

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

自动Apache服务器维护页面

我有一个在Linux/Apache/Tomcat堆栈上运行的网站,需要每隔几个月自动脱机以进行服务器维护,这将持续任意的时间.让Apache建立并取下"服务器维护"页面有哪些选择?

我需要能够通过shell脚本来控制它.(Google提供的答案围绕手动编辑服务器配置,我不想在凌晨3点在办公室!)我想我可以让脚本放入.htaccess文件并在完成时将其删除,但这似乎不够优雅.


回答评论:

迈克的答案看起来像是最佳实践答案,虽然我会做的可能更像Dan的答案,因为第三方托管服务提供商控制负载均衡器,我不想处理那些混乱.谢谢!

apache maintenance

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

IE在动态添加行时调整表列的大小

我想创建一个表,其中每行都有一个可扩展的详细信息行.请参阅以下简化示例代码.单击可见表中的行时,应克隆隐藏表中的相应行并将其插入单击的行下方 - 从而创建扩展的行效果.再次单击将删除详细信息行.

问题是在扩展第二行或第三行时,在IE8(可能还有其他版本)中,列的宽度会发生变化.第一行没有.差异似乎是详细信息行中内容的长度.在Firefox 3.5中查看相同的示例,无论细节内容的长度如何,您都会看到列保持其原始宽度.为什么会发生这种情况?如何解决?

附带的jQuery是1.2.6,但无论版本如何,效果都应该相同.

<html>
<head>
    <style type="text/css">
        table#primary {
            width: 504px;
            border-collapse: collapse;
        }
        table#primary,
        table#primary tr,
        table#primary th,
        table#primary td, {
            padding: 0;
            margin: 0;
        }
        table#primary td {
            border: 1px solid black;
        }
        td.time {
            width: 100px;
        }
        td.title {
            width: 300px;
        }
        td.room {
            width: 100px;
        }
        table#secondary {
            display: none;
        }
    </style>
    <script type="text/javascript" src="scripts/jquery.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $("table#primary tr").click(function() { 
                toggleDetails($(this));
            });
        });

        function toggleDetails(row) {
            if (row.hasClass("expanded")) {
                hideDetails(row);
            } …
Run Code Online (Sandbox Code Playgroud)

html javascript css internet-explorer

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