Skip to content

Commit f584275

Browse files
committed
usps please undo whatever you just did
1 parent 05c2fe8 commit f584275

File tree

4 files changed

+17
-8
lines changed

4 files changed

+17
-8
lines changed

usps/__init__.py

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

usps/tracking/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class Package:
2121

2222
# Constants
2323
USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0"
24+
USER_AGENT_CHROME = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.3"
2425

2526
# Handle actual tracking
2627
from .ups import UPSTracking # noqa: E402

usps/tracking/ups.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ def track_package(cls, tracking_number: str) -> Package:
4444
if cls._session is None:
4545
cls._session = Session()
4646

47-
if not cls._session.cookies:
48-
cls._session.get("https://www.ups.com/track", headers = {"User-Agent": USER_AGENT})
49-
5047
try:
48+
if not cls._session.cookies:
49+
cls._session.get("https://www.ups.com/track", headers = {"User-Agent": USER_AGENT}, timeout = 5)
50+
5151
response = cls._session.post(
5252
"https://webapis.ups.com/track/api/Track/GetStatus?loc=en_US",
5353
json = {"Locale": "en_US", "TrackingNumber": [tracking_number]},
@@ -65,7 +65,7 @@ def track_package(cls, tracking_number: str) -> Package:
6565
raise StatusNotAvailable("API request failed")
6666

6767
cls._failcount += 1
68-
cls._session.cookies.clear()
68+
cls._session = Session()
6969
return cls.track_package(tracking_number)
7070

7171
if response["statusCode"] != "200":

usps/tracking/usps.py

+11-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from selenium.webdriver.firefox.options import Options
1515

1616
from usps.storage import security
17-
from . import USER_AGENT, Package, Step
17+
from . import USER_AGENT_CHROME, Package, Step
1818
from .exceptions import MissingElement, NoTextInElement, InvalidElementType, StatusNotAvailable
1919

2020
# Handle status mappings
@@ -34,7 +34,8 @@
3434
"arrived at usps facility": "At Facility",
3535
"departed usps facility": "Left Facility",
3636
"package acceptance pending": "Accepted",
37-
"garage / other door / other location at address": "Delivered"
37+
"garage / other door / other location at address": "Delivered",
38+
"left with individual": "Delivered"
3839
}
3940

4041
# BS4 wrappers
@@ -76,6 +77,13 @@ def __generate_security(cls, url: str) -> str:
7677
with Status("[cyan]Generating cookies...", spinner = "arc"):
7778
options = Options()
7879
options.add_argument("--headless")
80+
81+
# Setup profile with user agent
82+
profile = webdriver.FirefoxProfile()
83+
profile.set_preference("general.useragent.override", USER_AGENT_CHROME)
84+
85+
# Handle instance creation
86+
options.profile = profile
7987
instance = webdriver.Firefox(options = options)
8088
instance.get(url)
8189

@@ -108,7 +116,7 @@ def track_package(cls, tracking_number: str) -> Package:
108116

109117
else:
110118
page = BeautifulSoup(
111-
cls._session.get(url, cookies = cls._cookies, headers = {"User-Agent": USER_AGENT}).text,
119+
cls._session.get(url, cookies = cls._cookies, headers = {"User-Agent": USER_AGENT_CHROME}).text,
112120
"html.parser"
113121
)
114122
if "originalHeaders" in str(page):

0 commit comments

Comments
 (0)