legitbot 0.4.3 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +60 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -8
- data/.ruby-version +1 -0
- data/README.md +1 -1
- data/legitbot.gemspec +1 -1
- data/lib/legitbot/version.rb +1 -1
- data/test/apple_test.rb +2 -2
- data/test/facebook_test.rb +4 -4
- metadata +8 -7
- data/.travis.yml +0 -12
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 34d1432c7c405d783b22a46851db88ccdea9f303defeccdd1cf98604bbb6ce09
         | 
| 4 | 
            +
              data.tar.gz: a66b586f4b2dca67fb875ea37add6e7d89a7ce5d0705c3d1898d96ecf091036e
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: cad1db2571e939020f74e871365c4748dd78ff18eb8ad9f005ea5bf5b0707835e296afa2601fc6309c994f69b7903d21da788fc219f5d712ee75e1ae9885fb7b
         | 
| 7 | 
            +
              data.tar.gz: c72af598d60c55aff35a1b5e244dcde160a67589c588d68b9482d5e5c5f0590441c92505ec94beb462ff70a730ec9aabe80877a2d9db2f72c566c3a9c0b19059
         | 
| @@ -0,0 +1,60 @@ | |
| 1 | 
            +
            name: build
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            on: [push]
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            jobs:
         | 
| 6 | 
            +
              test:
         | 
| 7 | 
            +
                runs-on: ubuntu-latest
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                strategy:
         | 
| 10 | 
            +
                  fail-fast: false
         | 
| 11 | 
            +
                  matrix:
         | 
| 12 | 
            +
                    ruby: [ jruby, 2.6 ]
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                steps:
         | 
| 15 | 
            +
                - uses: actions/checkout@v2
         | 
| 16 | 
            +
                - name: Set up Ruby
         | 
| 17 | 
            +
                  uses: ruby/setup-ruby@v1
         | 
| 18 | 
            +
                  with:
         | 
| 19 | 
            +
                    ruby-version: ${{ matrix.ruby }}
         | 
| 20 | 
            +
                - name: Cache dependencies
         | 
| 21 | 
            +
                  uses: actions/cache@v1
         | 
| 22 | 
            +
                  with:
         | 
| 23 | 
            +
                    path: vendor/bundle
         | 
| 24 | 
            +
                    key: ${{ runner.os }}-${{ matrix.ruby }}-gems-${{ hashFiles('**/Gemfile.lock') }}
         | 
| 25 | 
            +
                    restore-keys: |
         | 
| 26 | 
            +
                      ${{ runner.os }}-${{ matrix.ruby }}-gems-
         | 
| 27 | 
            +
                - name: Install dependencies
         | 
| 28 | 
            +
                  run: |
         | 
| 29 | 
            +
                    bundle config path vendor/bundle
         | 
| 30 | 
            +
                    bundle install --jobs 4 --retry 3
         | 
| 31 | 
            +
                - name: Run tests
         | 
| 32 | 
            +
                  run: bundle exec rake test
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              lint:
         | 
| 35 | 
            +
                needs: test
         | 
| 36 | 
            +
                runs-on: ubuntu-latest
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                strategy:
         | 
| 39 | 
            +
                  matrix:
         | 
| 40 | 
            +
                    ruby: [ 2.6 ]
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                steps:
         | 
| 43 | 
            +
                - uses: actions/checkout@v2
         | 
| 44 | 
            +
                - name: Set up Ruby
         | 
| 45 | 
            +
                  uses: ruby/setup-ruby@v1
         | 
| 46 | 
            +
                  with:
         | 
| 47 | 
            +
                    ruby-version: ${{ matrix.ruby }}
         | 
| 48 | 
            +
                - name: Cache dependencies
         | 
| 49 | 
            +
                  uses: actions/cache@v1
         | 
| 50 | 
            +
                  with:
         | 
| 51 | 
            +
                    path: vendor/bundle
         | 
| 52 | 
            +
                    key: ${{ runner.os }}-${{ matrix.ruby }}-gems-${{ hashFiles('**/Gemfile.lock') }}
         | 
| 53 | 
            +
                    restore-keys: |
         | 
| 54 | 
            +
                      ${{ runner.os }}-${{ matrix.ruby }}-gems-
         | 
| 55 | 
            +
                - name: Install dependencies
         | 
| 56 | 
            +
                  run: |
         | 
| 57 | 
            +
                    bundle config path vendor/bundle
         | 
| 58 | 
            +
                    bundle install --jobs 4 --retry 3
         | 
| 59 | 
            +
                - name: Run linter
         | 
| 60 | 
            +
                  run: bundle exec rubocop
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.rubocop.yml
    CHANGED
    
    
    
        data/.ruby-version
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            2.4
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            # Legitbot  | 
| 1 | 
            +
            # Legitbot  [](https://badge.fury.io/rb/legitbot)
         | 
| 2 2 |  | 
| 3 3 | 
             
            Ruby gem to check that an IP belongs to a bot, typically a search
         | 
| 4 4 | 
             
            engine. This can be of help in protecting a web site from fake search
         | 
    
        data/legitbot.gemspec
    CHANGED
    
    | @@ -14,7 +14,7 @@ Gem::Specification.new do |spec| | |
| 14 14 | 
             
              spec.summary = 'Validate requests from Web crawlers: impersonating or not?'
         | 
| 15 15 | 
             
              spec.description = 'Does Web request come from a real search engine or from an impersonating agent?'
         | 
| 16 16 |  | 
| 17 | 
            -
              spec.required_ruby_version = '>= 2. | 
| 17 | 
            +
              spec.required_ruby_version = '>= 2.4.0'
         | 
| 18 18 | 
             
              spec.add_dependency 'augmented_interval_tree', '~> 0.1', '>= 0.1.1'
         | 
| 19 19 | 
             
              spec.add_dependency 'irrc', '~> 0.2', '>= 0.2.1'
         | 
| 20 20 | 
             
              spec.add_development_dependency 'bump', '~> 0.8', '>= 0.8.0'
         | 
    
        data/lib/legitbot/version.rb
    CHANGED
    
    
    
        data/test/apple_test.rb
    CHANGED
    
    | @@ -16,7 +16,7 @@ class AppleTest < Minitest::Test | |
| 16 16 | 
             
                assert match.fake?, msg: "#{ip} is a fake Applebot IP"
         | 
| 17 17 | 
             
              end
         | 
| 18 18 |  | 
| 19 | 
            -
              # rubocop:disable  | 
| 19 | 
            +
              # rubocop:disable Layout/LineLength
         | 
| 20 20 | 
             
              def test_user_agent
         | 
| 21 21 | 
             
                bot = Legitbot.bot(
         | 
| 22 22 | 
             
                  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Applebot/0.1; +http://www.apple.com/go/applebot)',
         | 
| @@ -25,5 +25,5 @@ class AppleTest < Minitest::Test | |
| 25 25 | 
             
                assert_equal :apple, bot.detected_as
         | 
| 26 26 | 
             
                assert bot.valid?, msg: 'A valid Applebot User-agent and IP'
         | 
| 27 27 | 
             
              end
         | 
| 28 | 
            -
              # rubocop:enable  | 
| 28 | 
            +
              # rubocop:enable Layout/LineLength
         | 
| 29 29 | 
             
            end
         | 
    
        data/test/facebook_test.rb
    CHANGED
    
    | @@ -5,14 +5,14 @@ require 'legitbot' | |
| 5 5 |  | 
| 6 6 | 
             
            module Legitbot
         | 
| 7 7 | 
             
              class Facebook
         | 
| 8 | 
            -
                # rubocop:disable  | 
| 8 | 
            +
                # rubocop:disable Layout/LineLength
         | 
| 9 9 | 
             
                def self.whois
         | 
| 10 10 | 
             
                  {
         | 
| 11 11 | 
             
                    ipv4: ['69.63.176.0/20', '66.220.144.0/20', '66.220.144.0/21', '69.63.184.0/21', '69.63.176.0/21', '74.119.76.0/22', '69.171.255.0/24', '173.252.64.0/18', '69.171.224.0/19', '69.171.224.0/20', '103.4.96.0/22', '69.63.176.0/24', '173.252.64.0/19', '173.252.70.0/24', '31.13.64.0/18', '31.13.24.0/21', '66.220.152.0/21', '66.220.159.0/24', '69.171.239.0/24', '69.171.240.0/20', '31.13.64.0/19', '31.13.64.0/24', '31.13.65.0/24', '31.13.67.0/24', '31.13.68.0/24', '31.13.69.0/24', '31.13.70.0/24', '31.13.71.0/24', '31.13.72.0/24', '31.13.73.0/24', '31.13.74.0/24', '31.13.75.0/24', '31.13.76.0/24', '31.13.77.0/24', '31.13.96.0/19', '31.13.66.0/24', '173.252.96.0/19', '69.63.178.0/24', '31.13.78.0/24', '31.13.79.0/24', '31.13.80.0/24', '31.13.82.0/24', '31.13.83.0/24', '31.13.84.0/24', '31.13.85.0/24', '31.13.86.0/24', '31.13.87.0/24', '31.13.88.0/24', '31.13.89.0/24', '31.13.90.0/24', '31.13.91.0/24', '31.13.92.0/24', '31.13.93.0/24', '31.13.94.0/24', '31.13.95.0/24', '69.171.253.0/24', '69.63.186.0/24', '31.13.81.0/24', '179.60.192.0/22', '179.60.192.0/24', '179.60.193.0/24', '179.60.194.0/24', '179.60.195.0/24', '185.60.216.0/22', '45.64.40.0/22', '185.60.216.0/24', '185.60.217.0/24', '185.60.218.0/24', '185.60.219.0/24', '129.134.0.0/16', '157.240.0.0/16', '157.240.8.0/24', '157.240.0.0/24', '157.240.1.0/24', '157.240.2.0/24', '157.240.3.0/24', '157.240.4.0/24', '157.240.5.0/24', '157.240.6.0/24', '157.240.7.0/24', '157.240.9.0/24', '157.240.10.0/24', '157.240.16.0/24', '157.240.19.0/24', '157.240.11.0/24', '157.240.12.0/24', '157.240.13.0/24', '157.240.14.0/24', '157.240.15.0/24', '157.240.17.0/24', '157.240.18.0/24', '157.240.20.0/24', '157.240.21.0/24', '157.240.22.0/24', '157.240.23.0/24', '157.240.0.0/17', '69.171.250.0/24', '157.240.24.0/24', '157.240.25.0/24', '199.201.64.0/24', '199.201.65.0/24', '199.201.64.0/22', '204.15.20.0/22', '157.240.192.0/24', '129.134.0.0/17', '157.240.198.0/24'],
         | 
| 12 12 | 
             
                    ipv6: []
         | 
| 13 13 | 
             
                  }
         | 
| 14 14 | 
             
                end
         | 
| 15 | 
            -
                # rubocop:enable  | 
| 15 | 
            +
                # rubocop:enable Layout/LineLength
         | 
| 16 16 | 
             
              end
         | 
| 17 17 | 
             
            end
         | 
| 18 18 |  | 
| @@ -33,7 +33,7 @@ class FacebookTest < Minitest::Test | |
| 33 33 | 
             
                assert match.fake?, msg: "#{ip} is a fake Facebook IP"
         | 
| 34 34 | 
             
              end
         | 
| 35 35 |  | 
| 36 | 
            -
              # rubocop:disable Metrics/LineLength, Metrics/MethodLength
         | 
| 36 | 
            +
              # rubocop:disable Metrics/AbcSize, Layout/LineLength, Metrics/MethodLength
         | 
| 37 37 | 
             
              def test_user_agent
         | 
| 38 38 | 
             
                Legitbot.bot(
         | 
| 39 39 | 
             
                  'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)',
         | 
| @@ -59,5 +59,5 @@ class FacebookTest < Minitest::Test | |
| 59 59 | 
             
                  assert bot.fake?, msg: 'fake Facebook'
         | 
| 60 60 | 
             
                end
         | 
| 61 61 | 
             
              end
         | 
| 62 | 
            -
              # rubocop:enable Metrics/LineLength, Metrics/MethodLength
         | 
| 62 | 
            +
              # rubocop:enable Metrics/AbcSize, Layout/LineLength, Metrics/MethodLength
         | 
| 63 63 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: legitbot
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 1.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Alexander Azarov
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020- | 
| 11 | 
            +
            date: 2020-06-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: augmented_interval_tree
         | 
| @@ -137,9 +137,10 @@ executables: [] | |
| 137 137 | 
             
            extensions: []
         | 
| 138 138 | 
             
            extra_rdoc_files: []
         | 
| 139 139 | 
             
            files:
         | 
| 140 | 
            +
            - ".github/workflows/build.yml"
         | 
| 140 141 | 
             
            - ".gitignore"
         | 
| 141 142 | 
             
            - ".rubocop.yml"
         | 
| 142 | 
            -
            - ". | 
| 143 | 
            +
            - ".ruby-version"
         | 
| 143 144 | 
             
            - Gemfile
         | 
| 144 145 | 
             
            - LICENSE.txt
         | 
| 145 146 | 
             
            - README.md
         | 
| @@ -179,7 +180,7 @@ homepage: https://github.com/alaz/legitbot | |
| 179 180 | 
             
            licenses:
         | 
| 180 181 | 
             
            - Apache-2.0
         | 
| 181 182 | 
             
            metadata: {}
         | 
| 182 | 
            -
            post_install_message: | 
| 183 | 
            +
            post_install_message:
         | 
| 183 184 | 
             
            rdoc_options:
         | 
| 184 185 | 
             
            - "--charset=UTF-8"
         | 
| 185 186 | 
             
            require_paths:
         | 
| @@ -188,7 +189,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 188 189 | 
             
              requirements:
         | 
| 189 190 | 
             
              - - ">="
         | 
| 190 191 | 
             
                - !ruby/object:Gem::Version
         | 
| 191 | 
            -
                  version: 2. | 
| 192 | 
            +
                  version: 2.4.0
         | 
| 192 193 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 193 194 | 
             
              requirements:
         | 
| 194 195 | 
             
              - - ">="
         | 
| @@ -196,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 196 197 | 
             
                  version: '0'
         | 
| 197 198 | 
             
            requirements: []
         | 
| 198 199 | 
             
            rubygems_version: 3.1.2
         | 
| 199 | 
            -
            signing_key: | 
| 200 | 
            +
            signing_key:
         | 
| 200 201 | 
             
            specification_version: 4
         | 
| 201 202 | 
             
            summary: 'Validate requests from Web crawlers: impersonating or not?'
         | 
| 202 203 | 
             
            test_files:
         |