跳转到主要内容

Datasette插件,可阻止使用robots.txt的所有机器人

项目描述

datasette-block-robots

PyPI Changelog License

Datasette插件,可阻止使用robots.txt的机器人和爬虫

安装

在Datasette相同的环境中安装此插件。

$ pip install datasette-block-robots

使用

安装插件后,您的Datasette实例上的/robots.txt将返回以下内容

User-agent: *
Disallow: /

这将请求所有机器人和爬虫不要访问您站点的任何页面。

以下是一个插件操作演示:https://sqlite-generate-demo.datasette.io/robots.txt

配置

默认情况下,插件将使用Disallow: /阻止对站点的所有访问。

如果您想让索引页面被搜索引擎索引,而不会爬取数据库、表或行页面,可以使用以下内容

{
    "plugins": {
        "datasette-block-robots": {
            "allow_only_index": true
        }
    }
}

这将返回如下的/robots.txt

User-agent: *
Disallow: /db1
Disallow: /db2

为每个附加数据库添加一个Disallow行。

要使用自定义路径阻止对站点特定区域的访问,请将以下内容添加到您的metadata.json配置文件中

{
    "plugins": {
        "datasette-block-robots": {
            "disallow": ["/mydatabase/mytable"]
        }
    }
}

这将导致以下/robots.txt

User-agent: *
Disallow: /mydatabase/mytable

或者,您可以使用literal配置选项来设置整个robots.txt文件的完整内容。如果您使用的是YAML而不是JSON,并且有一个metadata.yml文件,以下是这样做的方法

plugins:
    datasette-block-robots:
        literal: |-
            User-agent: *
            Disallow: /
            User-agent: Bingbot
            User-agent: Googlebot
            Disallow:

此示例将阻止除Googlebot和Bingbot之外的所有爬虫,允许它们爬取整个站点。

与其他插件扩展

此插件为Datasette添加了一个新的插件钩子,名为block_robots_extra_lines(),其他插件可以使用它来向robots.txt文件添加自己的附加行。

钩子可以可选地接受以下参数

  • datasette:当前的Datasette实例。您可以使用它来执行SQL查询或读取插件配置设置。
  • request:表示对 /robots.txt 的请求的 请求对象

钩子应返回一个字符串列表,每个字符串代表要添加到 robots.txt 文件中的一行。

还可以返回一个 async def 函数,该函数将被等待并用于生成行列表。如果需要在钩子实现中调用 await,请使用此选项。

此示例使用钩子将 Sitemap: http://example.com/sitemap.xml 行添加到 robots.txt 文件。

from datasette import hookimpl

@hookimpl
def block_robots_extra_lines(datasette, request):
    return [
        "Sitemap: {}".format(datasette.absolute_url(request, "/sitemap.xml")),
    ]

此示例根据数据库查询阻止对路径的访问。

@hookimpl
def block_robots_extra_lines(datasette):
    async def inner():
        db = datasette.get_database()
        result = await db.execute("select path from mytable")
        return [
            "Disallow: /{}".format(row["path"]) for row in result
        ]
    return inner

datasette-sitemap 是使用此钩子的插件的一个示例。

开发

要本地设置此插件,首先检出代码。然后创建一个新的虚拟环境

cd datasette-block-robots
python3 -mvenv venv
source venv/bin/activate

或者如果您正在使用 pipenv

pipenv shell

现在安装依赖项和测试

pip install -e '.[test]'

要运行测试

pytest

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

datasette-block-robots-1.1.tar.gz (4.1 kB 查看哈希值)

上传时间

构建分布

datasette_block_robots-1.1-py3-none-any.whl (4.4 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF 赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面