# A crawler has a bogus useragent it copied badly. Mark it as a bad useragent.
SetEnvIfNoCase User-Agent (edg/) bad_user_agents

# Some basic crawler blocks, by IP range because who wants to faff around with bullshit lying useragents?
<RequireAll>
    Require all granted

    # Bad useragent? Mostly for crappy stealth-bots
    Require not env bad_user_agents

    # Facebook's crawler
    Require not ip 57.141.0.0/24
    Require not ip 57.141.20.0/24
    Require not ip 57.141.6.0/24

    # AWS ranges
    Require not ip 98.80.0.0/12
    Require not ip 54.64.0.0/11
    Require not ip 52.64.0.0/12
    Require not ip 52.0.0.0/10
    Require not ip 50.16.0.0/14
    Require not ip 44.192.0.0/10
    Require not ip 35.152.0.0/13
    Require not ip 35.160.0.0/12
    Require not ip 35.176.0.0/13
    Require not ip 34.192.0.0/10
    Require not ip 23.20.0.0/14
    Require not ip 184.72.0.0/15
    Require not ip 18.32.0.0/11
    Require not ip 18.64.0.0/10
    Require not ip 18.128.0.0/9
    Require not ip 3.0.0.0/9
    Require not ip 107.20.0.0/14
    Require not ip 100.24.0.0/13
    Require not ip 100.20.0.0/14
    Require not ip 3.128.0.0/9
    Require not ip 52.222.0.0/16
    Require not ip 52.208.0.0/13
    Require not ip 52.192.0.0/12
    Require not ip 52.223.0.0/17
    Require not ip 52.216.0.0/14
    Require not ip 52.223.128.0/18
    Require not ip 52.220.0.0/15
    Require not ip 54.224.0.0/11
    Require not ip 47.128.0.0/14

    # Petalsearch, Huawei's AI crap
    Require not ip 114.119.128.0/19

    # ReflectionAI crap
    Require not ip 16.216.88.0/23

    # Hetzner, which hosts lyrenthbot
    Require not ip 178.104.0.0/15
    Require not ip 168.119.0.0/16
    Require not ip 142.132.128.0/17
    Require not ip 46.224.0.0/15

    # Mystery bot from Alibaba cloud, lies about referer and useragent
    Require not ip 47.79.192.0/19
    Require not ip 47.82.48.0/21

    # Places that MJ12Bot come from. Their "why you should let us crawl"
    # text is skeevy.

    # MJ12Bot from OVH datacenters
    Require not ip 145.239.0.0/16
    Require not ip 147.135.128.0/17
    Require not ip 193.70.0.0/17
    Require not ip 51.68.0.0/16
    Require not ip 51.75.0.0/16
    Require not ip 51.83.0.0/16
    Require not ip 51.91.0.0/16
    Require not ip 54.37.0.0/16
    Require not ip 79.137.0.0/17

    # MJ12Bot from Hetzner
    Require not ip 195.201.0.0/16

    # MJ12Bot from Contabo
    Require not ip 62.84.176.0/20

    # MJ12Bot from Kyiv(!)
    Require not ip 94.154.236.0/22

    # Elevenlabs AI crawler. At least they only come from a single IP address.
    Require not ip 72.63.246.191

</RequireAll>
