Skip to content

Commit fb9cadb

Browse files
committed
make ups a bit more resiliant
1 parent 1f4761d commit fb9cadb

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

usps/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.8.2"
1+
__version__ = "0.8.3"

usps/tracking/ups.py

+14-5
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,18 @@
3030
"arrived at facility": "At Facility"
3131
}
3232

33+
# Headers that need to exist for UPS to respond
34+
# I'm not sure why they check *these* headers, but ¯\_(ツ)_/¯
35+
UPS_HEADERS = {
36+
"Accept-Encoding": "gzip, deflate, br, zstd",
37+
"Accept-Language": "en-US,en;q=0.5",
38+
"Sec-Fetch-Dest": "document",
39+
"Sec-Fetch-Site": "none",
40+
"Sec-Fetch-User": "?1",
41+
"Sec-GPC": "1",
42+
"User-Agent": USER_AGENT,
43+
}
44+
3345
# Main class
3446
class UPSTracking:
3547
_session: Session | None = None
@@ -46,15 +58,12 @@ def track_package(cls, tracking_number: str) -> Package:
4658

4759
try:
4860
if not cls._session.cookies:
49-
cls._session.get("https://www.ups.com/track", headers = {"User-Agent": USER_AGENT}, timeout = 5)
61+
cls._session.get("https://www.ups.com/track", headers = UPS_HEADERS, timeout = 5)
5062

5163
response = cls._session.post(
5264
"https://webapis.ups.com/track/api/Track/GetStatus?loc=en_US",
5365
json = {"Locale": "en_US", "TrackingNumber": [tracking_number]},
54-
headers = {
55-
"Accept-Encoding": "gzip, deflate, br, zstd",
56-
"Accept-Language": "en-US,en;q=0.5",
57-
"User-Agent": USER_AGENT,
66+
headers = UPS_HEADERS | {
5867
"X-XSRF-TOKEN": cls._session.cookies["X-XSRF-TOKEN-ST"]
5968
},
6069
timeout = 5

0 commit comments

Comments
 (0)