Absolute DNS lookups
This commit is contained in:
parent
d27dd89a1f
commit
d707eef267
32
check.py
32
check.py
|
@ -11,7 +11,33 @@ from email.mime.text import MIMEText
|
||||||
from email.utils import formatdate, make_msgid
|
from email.utils import formatdate, make_msgid
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
from requests.adapters import HTTPAdapter
|
||||||
from urllib3.exceptions import InsecureRequestWarning # type: ignore
|
from urllib3.exceptions import InsecureRequestWarning # type: ignore
|
||||||
|
from urllib3.util.url import parse_url # type: ignore
|
||||||
|
|
||||||
|
|
||||||
|
class AbsoluteDNSAdapter(HTTPAdapter):
|
||||||
|
"""A custom adapter for requests to ensure hostnames are treated as absolute."""
|
||||||
|
|
||||||
|
def add_dot_to_hostname(self, url: str) -> str:
|
||||||
|
"""Append a dot to the hostname to treat it as an absolute domain name."""
|
||||||
|
parsed_url = parse_url(url)
|
||||||
|
|
||||||
|
# Append a dot to the hostname if it's not already there.
|
||||||
|
hostname = parsed_url.host
|
||||||
|
if not hostname.endswith("."):
|
||||||
|
hostname += "."
|
||||||
|
|
||||||
|
# Reconstruct the URL with the modified hostname.
|
||||||
|
new_url: str = parsed_url._replace(host=hostname).url
|
||||||
|
return new_url
|
||||||
|
|
||||||
|
def send(self, request, **kwargs): # type: ignore
|
||||||
|
"""Override the send method to modify the request URL before sending."""
|
||||||
|
# Modify the request URL to ensure the hostname is treated as absolute.
|
||||||
|
request.url = self.add_dot_to_hostname(request.url)
|
||||||
|
return super().send(request, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
config_file_path = os.path.expanduser(
|
config_file_path = os.path.expanduser(
|
||||||
os.path.join(
|
os.path.join(
|
||||||
|
@ -35,6 +61,12 @@ headers = {"User-Agent": AGENT, "Accept": "text/html"}
|
||||||
s = requests.Session()
|
s = requests.Session()
|
||||||
s.headers.update(headers)
|
s.headers.update(headers)
|
||||||
|
|
||||||
|
# Create a session and mount the custom adapter for both HTTP and HTTPS requests.
|
||||||
|
adapter = AbsoluteDNSAdapter()
|
||||||
|
s.mount("http://", adapter)
|
||||||
|
s.mount("https://", adapter)
|
||||||
|
|
||||||
|
|
||||||
MAIL_FROM = "edward@4angle.com"
|
MAIL_FROM = "edward@4angle.com"
|
||||||
MAIL_TO_NAME = "Edward Betts"
|
MAIL_TO_NAME = "Edward Betts"
|
||||||
MAIL_TO_ADDRESS = "edward@4angle.com"
|
MAIL_TO_ADDRESS = "edward@4angle.com"
|
||||||
|
|
Loading…
Reference in a new issue