diff --git a/.github/workflows/pages-gem.yml b/.github/workflows/pages-gem.yml
index 4f75e2b..6a619b0 100644
--- a/.github/workflows/pages-gem.yml
+++ b/.github/workflows/pages-gem.yml
@@ -14,9 +14,9 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
       - name: Setup Ruby
-        uses: ruby/setup-ruby@52753b7da854d5c07df37391a986c76ab4615999 # v1.191.0
+        uses: ruby/setup-ruby@472790540115ce5bd69d399a020189a8c87d641f # v1.247.0
         with:
-          ruby-version: '3.2'
+          ruby-version: '3.3'
       - name: Build gem
         run: |
           gem build github-pages-health-check.gemspec
diff --git a/.github/workflows/push-cibuild.yml b/.github/workflows/push-cibuild.yml
index daf389c..012ae55 100644
--- a/.github/workflows/push-cibuild.yml
+++ b/.github/workflows/push-cibuild.yml
@@ -10,9 +10,9 @@ jobs:
       fail-fast: false
       matrix:
         ruby:
-          - '3.0'
           - '3.1'
           - '3.2'
+          - '3.3'
     steps:
     - uses: actions/checkout@master
     - name: script/cibuild-docker
diff --git a/.ruby-version b/.ruby-version
index a3ec5a4..eb39e53 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-3.2
+3.3
diff --git a/github-pages-health-check.gemspec b/github-pages-health-check.gemspec
index fcb2dcb..974d51a 100644
--- a/github-pages-health-check.gemspec
+++ b/github-pages-health-check.gemspec
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
   s.files                 = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
   s.require_paths         = ["lib"]
 
-  s.add_dependency("addressable", "~> 2.3")
+  s.add_dependency("addressable", "~> 2.8.7")
   s.add_dependency("dnsruby", "~> 1.60")
   s.add_dependency("octokit", ">= 4", "< 10")
   s.add_dependency("public_suffix", ">= 3.0", "< 7.0")
diff --git a/lib/github-pages-health-check/domain.rb b/lib/github-pages-health-check/domain.rb
index b5a79f1..03d6a1f 100644
--- a/lib/github-pages-health-check/domain.rb
+++ b/lib/github-pages-health-check/domain.rb
@@ -1,5 +1,7 @@
 # frozen_string_literal: true
 
+require "securerandom"
+
 module GitHubPages
   module HealthCheck
     class Domain < Checkable
@@ -442,6 +444,40 @@ def served_by_pages?
         end
       end
 
+      def parent_domain
+        parsed = PublicSuffix.parse(host)
+        parent = host.split(".", 2).last
+        if parent == parsed.tld
+          return nil
+        end
+
+        parent
+      rescue PublicSuffix::DomainNotAllowed
+        nil
+      end
+
+      def maybe_wildcard?
+        return @maybe_wildcard if defined? @maybe_wildcard
+        return false unless dns_resolves?
+        return false unless parent_domain
+
+        sibling_domain = SecureRandom.alphanumeric(20) + "." + parent_domain
+
+        @maybe_wildcard = begin
+          wildcard_resolver = GitHubPages::HealthCheck::Resolver.new(sibling_domain, :nameservers => nameservers)
+
+          [Dnsruby::Types::A, Dnsruby::Types::AAAA].any? do |record_type|
+            wildcard_resolver.query(record_type).any? do |record|
+              record.respond_to?(:address) && github_pages_ip?(record.address)
+            end
+          end
+        end
+      end
+
+      def wildcard_warning
+        Errors::WildcardRecordError.new :domain => self, :parent_domain => parent_domain if maybe_wildcard?
+      end
+
       def uri(overrides = {})
         options = { :host => host, :scheme => scheme, :path => "/" }
         options = options.merge(overrides)
diff --git a/lib/github-pages-health-check/errors/wildcard_record_error.rb b/lib/github-pages-health-check/errors/wildcard_record_error.rb
new file mode 100644
index 0000000..b6e012c
--- /dev/null
+++ b/lib/github-pages-health-check/errors/wildcard_record_error.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+module GitHubPages
+  module HealthCheck
+    module Errors
+      class WildcardRecordError < GitHubPages::HealthCheck::Error
+        DOCUMENTATION_PATH = "/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages/"
+
+        attr_reader :parent_domain
+
+        def initialize(repository: nil, domain: nil, parent_domain: nil)
+          super(:repository => repository, :domain => domain)
+          @parent_domain = parent_domain
+        end
+
+        def message
+          <<-MSG
+            The DNS record for your domain appears to be *.#{parent_domain}, a wildcard record.
+            Your GitHub Pages site will still work, but unless you verify ownership of #{parent_domain},
+            any GitHub Pages user can serve their content from an arbitrary subdomain of it.
+          MSG
+        end
+      end
+    end
+  end
+end
diff --git a/lib/github-pages-health-check/resolver.rb b/lib/github-pages-health-check/resolver.rb
index 9d161d7..5f590da 100644
--- a/lib/github-pages-health-check/resolver.rb
+++ b/lib/github-pages-health-check/resolver.rb
@@ -43,15 +43,15 @@ def resolver
                         self.class.default_resolver
                       when :authoritative
                         Dnsruby::Resolver.new(DEFAULT_RESOLVER_OPTIONS.merge(
-                                                :nameservers => authoritative_nameservers
+                                                :nameserver => authoritative_nameservers
                                               ))
                       when :public
                         Dnsruby::Resolver.new(DEFAULT_RESOLVER_OPTIONS.merge(
-                                                :nameservers => PUBLIC_NAMESERVERS
+                                                :nameserver => PUBLIC_NAMESERVERS
                                               ))
                       when Array
                         Dnsruby::Resolver.new(DEFAULT_RESOLVER_OPTIONS.merge(
-                                                :nameservers => nameservers
+                                                :nameserver => nameservers
                                               ))
                       else
                         raise "Invalid nameserver type: #{nameservers.inspect}"
diff --git a/lib/github-pages-health-check/version.rb b/lib/github-pages-health-check/version.rb
index a2e6a2e..9a342b6 100644
--- a/lib/github-pages-health-check/version.rb
+++ b/lib/github-pages-health-check/version.rb
@@ -2,6 +2,6 @@
 
 module GitHubPages
   module HealthCheck
-    VERSION = "1.18.5"
+    VERSION = "1.19.0"
   end
 end
diff --git a/spec/github_pages_health_check/errors_spec.rb b/spec/github_pages_health_check/errors_spec.rb
index bd13037..65d3f80 100644
--- a/spec/github_pages_health_check/errors_spec.rb
+++ b/spec/github_pages_health_check/errors_spec.rb
@@ -4,6 +4,6 @@
 
 RSpec.describe(GitHubPages::HealthCheck::Errors) do
   it "returns the errors" do
-    expect(GitHubPages::HealthCheck::Errors.all.count).to eql(10)
+    expect(GitHubPages::HealthCheck::Errors.all.count).to eql(11)
   end
 end