Sep-05-2025, 09:18 PM
(This post was last modified: Sep-24-2025, 01:08 PM by CaptainNewb.)
I was way off on this code!
|
403 error
|
|
Sep-05-2025, 09:18 PM
(This post was last modified: Sep-24-2025, 01:08 PM by CaptainNewb.)
I was way off on this code!
Sep-05-2025, 11:33 PM
Just to be sure, can you actually login using the your login details?
Quote: The HTTP 403 Forbidden status code indicates that the server understood the request but refuses to authorize it. This error is distinct from a 401 Unauthorized error, which implies that authentication is required and might succeed with valid credentials. In contrast, a 403 error means that even with authentication, access is not permitted. Are you trying to access parts that are a no go?
Sep-08-2025, 03:11 PM
I can actually login via browser without issue. I just updated the code above with test creds that work. You can try this and will be able to log in successfully via the browser to https://www.finewineandgoodspirits.com/
I'm at work and didn't bring that laptop with me that has the script, but I'll post all code tomorrow. Not sure what you mean by am I trying to access parts that are a no go. What I can say is that I used to successfully login via python to the site without issue, but it has since stopped- with no change to my code. That's why I've reached out to you, the python gods to see if you can help a rookie out.
Sep-08-2025, 08:25 PM
(This post was last modified: Sep-24-2025, 01:12 PM by CaptainNewb.)
Way off on this
Sep-09-2025, 06:25 PM
(This post was last modified: Sep-24-2025, 01:12 PM by CaptainNewb.)
Way off on this code
Sep-09-2025, 08:21 PM
(This post was last modified: Sep-09-2025, 09:02 PM by CaptainNewb.)
Hi, I was just told that my post might be a better fit for this webscraping forum? I dunno. I'm receiving a 403 error. Please see below and let me know your thoughts.
Hi Guys, I'm relatively new to python, 2 years in and I love it. I had an extremely basic python script that simply logs into a website, that's it! It worked great for a month but then something changed. The script now returns a 403 during login and I can't figure out why. Maybe something changed on their site because I didn't change anything in my script. I grab the cookies, header, and login info from running Dev Tools in my browser, then copy as cURL into an online converter then paste it into my script. The code below is using test creds that work via the browser to https://www.finewineandgoodspirits.com/ Can someone take a look below and help me figure out why it's failing? Any assistance would be greatly appreciated as I'm only two years in and would love to figure out why this is now failing. My code is below: #!/usr/bin/python3
import requests
import json
import sys, getopt
import requests
bearer = "Bearer "
######################################################################################################################
# Login #
######################################################################################################################
import requests
cookies = {
'_fbp': 'fb.1.1753458337436.703674254982404712',
'_gcl_au': '1.1.1955747649.1753458337.1544313343.1757360759.1757360758',
'bm_sv': 'D2C86C14125CD6F1A767FC717EFD0143~YAAQpugtFyOQXCaZAQAABcXcKh0Br9P9NZHutq9xp/+CEILSSwyyn2tjkSMpYf9DQGAIR7XQ4JFeRdefplgWAAvJmkEz1pHwAI0bT98nkEd95UEqY0cuByocEdvnlnGbJ0kTyI2xQUnmuXU/24kitMwMrtL601sZj6yBVk13VcMwpQ0/kKfKeWxYCe57/sq4m3fQInO7yNyxjPr7FQlotx3wDKBw7nDTRTy3+YsDSKd3qAHgHQJqP6NFcEtHV1l+iLVxl9zWCyxtnJt6XtiYjQ==~1',
'AGEVERIFY': 'Over21',
'_abck': '01443C4B3543715EDF1C2ADDDD30FC8C~0~YAAQpugtFxyIXCaZAQAAzLDcKg52YFqp8tLgVckHm5Nu3m0B8qCnrsaMtBorkR4GtVgywMbg6SMpxXfYZf4WoRStT0tqyXRjf94fDL4ttZl/ee9yA2Baov+OocMxUD1XLScPuSlRmHOUjOb1p1wv8IJEP/s/pOV0Rdzw7UMZDxnDDUfqU03Z8+AgtDUMNv/aA1brFfSvmPIW2TEgvnLN42jFeVTJfqk4n9g/GoeqniHoldmzqHZgUZqrPRjC1GTEdK0B3f68pZsMDwUaqs01WdlxHeq3mzzQZ24Ac/144Iv+MR98iI/JLCV7es18SWBT92q8RyK5qXOeIpQgBR/nZrn1/UdBGq9FtaqJa2syUSNN4aobPLcZQh+4Kqup/8owIVl/IoxNOnsz4NVQWwcQFzKyMuZElayMA5w0HablHsNPjOio7yeuf7tubGTwmjj752MwzMm9hvkgkpz9L8Nif6D8z2GCV2vbS+LttBnea5YkxM4wVy9svdC+7Yg9KIFAA4ImQ0ZvyPYS+QdnmiXnHAdgtgbAnd6VKtCx3HMyQm7jNBetz9LxlegdBafJYTsX0+4jcBARjzrbx4Ztt1+hB5w5hfMutQAIqhTGGj3iddftG4gHvVTOYSo4IBjrofk5LmxbvwkQ2r1LhrWzDv9pFCsqyUAMhYSfi0LXqH9YouyaaUGukNjCwumFgXOJ20EISl3ryTy+DGPK1VN2D6lTAoAsuhi0vmDjKfXWEW7ZA2RepJhhJ/Kmz4ZKhtLhZSOnog9Jsq0baIykLgwPqS06UpzApEhBi2lidg5mt/jHzg4hdniEaXa9IJfOmese3yDeW8SVmJfVgv0oYbWl6DRWSwt8QAQyvlYyu9HXuJdGXg7e7CBuRBVDz0YFjG0b9L68i/WPRVee8GSSU98QgMF+i9FvNu3UrZ1PrhjzJbvxxCoO7Bf9JmqithM=~-1~-1~1757364328~~',
'xda8383328c1PRD_siteUS': '1377-uhNRhQQ1JaMw5SGmkaVwWo1Al7jrjhcJLxVaE03W7w88D3%3A1756157616898%3A1756924017195%3A1757360730550%3A384683%3A2',
'xva8383328c1PRD_siteUS': '-284c077c%3A1992ab3b2dd%3A7cbd-4094315784',
'_vuid': 'cc821b87-5f40-40dd-bfd5-a179a1b8dc53',
'__adroll_fpc': '18d3af3c8ccf3a64cf5791668c0125d0-1753458337577',
'_ga': 'GA1.1.473316754.1753458337',
'_ga_Y3ZSL11TM0': 'GS2.1.s1757360729$o24$g0$t1757360729$j60$l0$h0',
'_pin_unauth': 'dWlkPVkyWTVaRGsxTW1JdFpHTXlNQzAwTnprNUxXRmhZak10TkRabFpUQmhaamRsWkRWag',
'ak_bmsc': 'B33818A8DB11AECCBD96E1E2AFDD39A6~000000000000000000000000000000~YAAQpugtF+KFXCaZAQAAGKzcKh057f6qKe6MzhpHigfZMnBPd9t6tsrBbjFn99oTYa+/jCtJ4x6PN2/Rdj5ttj77REc4+UB4qsT2rCFHTU07/A3KfpI6Z6p/J0Q/M+xmSW2Z9risc5teaQlLIQnj6KDm9us0fZn5SU28YoyJhN6GOE3TPkj4D0x3iKnuSUOQPOi3PfzChGeluRxJkbFdH5uPxejHRU2OkhEcbl+E4f6JQmdE7gW3cyv7veiN9n0eXQEZ+UHW3JUobJUmAEXD4LwJbSEIP52RKuEg6+bH9vdI3RhpK3xf9r7Iu2g6kHohYTPlvyLcf4WFa9TElaQkWF/0EwcTM3UW7fn9C/wyff+2pJe/dL8r07320ooxf3UBBun7KKluehy2shhFR6yZmbqVB3v5eWKYmyVUuzm3g80vrY5W+DkpSqyIjzwKjJFaHwO+0v09cZiERXXuL6oDNmRBSAWXU+CC3XFQJFt+603iWr2cZZXRxeomC7Q5OpSwjzaFNokB22o=',
'bm_sz': '92536D56896F657C60C10F43B38F654A~YAAQpugtF6OGXCaZAQAAtq3cKh0Ublf2SWHGyzfy18xS9eTWzSOpE3NLYiL06sl6izw6wPeLDfRDgbQ7w8mal10I8nWdebUxVC9NsZKnWve4bwyrMZvXGIGWL9iEakqZ/AUsvy0WM4HQZMyMqEthZY7/UoqHHVzgLB/qbk8cycYIIg+mtg+3kaJOs2uJ+6x5JC0FEe/5ZNZd8rT26jeelmKN4ds5N96jb5+wm7Tx831PzyCEcoWmsAgKvY7TpDNyWtAj7ktuXIN8ilOxEiARaYY/CJs+ZIDRQIAssI9GF4Xp/SBPciOfv7RymJfVKh0u9NKqtcza94tJn99vrUrcbpq2Sa6NDNRIbZNHL7q1L9p9la8GKpMPvP8a0LzNUnCXzuDzqeQchrAnVj2Uo2SSlxU+ZMDGexCNd58YSYxY+pTtn9Gv2LGbkXV3Cw5YZ5DGTvSwD6LpdC3kLRsULA==~3228978~3289670',
'__ar_v4': 'H422MU2HOBC4HLZGUQMCAG%3A20250824%3A8%7CYEV7UUOV4NHJNEIGTN5CUO%3A20250824%3A8',
'BOPISENABLED': 'True',
'JSESSIONID': 'J8Eq3KwuBrjTeU2DqzwPXwnaCY6RnsS_Tf0VYooE4BlCIH00hK9l!-1039427027',
'ccstoreroute': '67088b14ba2ec5ab09aa18e18834fed9|cc2d3787e8999f4a634b9d592c9e2268',
'BVBRANDSID': '08f8d86d-0171-44ac-a143-3aac88633115',
'GSIDyk8q9gLSz40L': 'd28015df-c4fc-4c07-be79-eb54221c22b5',
'STSID148379': 'd784aa87-50e0-459f-aa23-5d0b715a95cb',
'ltkSubscriber-Footer': 'eyJsdGtDaGFubmVsIjoiZW1haWwiLCJsdGtUcmlnZ2VyIjoibG9hZCIsImx0a0VtYWlsIjoiIn0%3D',
'ltkpopup-session-depth': '1-2',
'osfliveuiroute': '470fe6b95f3569a6cecd0f3974357df8|a271690a033ecd4ba18a69565eca7c19',
'storePriceListGroupId': 'defaultPriceGroup',
'ltkpopup-suppression-8e9eb133-da66-408a-880e-6f4844cae736': '1',
'__pdst': '1080d8749e324574b21197d7889d8054',
'BVBRANDID': '38466caa-05d1-47b0-a46d-d7582b39e1d9',
}
headers = {
'Referer': 'https://www.finewineandgoodspirits.com/',
# 'Cookie': '_fbp=fb.1.1753458337436.703674254982404712; _gcl_au=1.1.1955747649.1753458337.1544313343.1757360759.1757360758; bm_sv=D2C86C14125CD6F1A767FC717EFD0143~YAAQpugtFyOQXCaZAQAABcXcKh0Br9P9NZHutq9xp/+CEILSSwyyn2tjkSMpYf9DQGAIR7XQ4JFeRdefplgWAAvJmkEz1pHwAI0bT98nkEd95UEqY0cuByocEdvnlnGbJ0kTyI2xQUnmuXU/24kitMwMrtL601sZj6yBVk13VcMwpQ0/kKfKeWxYCe57/sq4m3fQInO7yNyxjPr7FQlotx3wDKBw7nDTRTy3+YsDSKd3qAHgHQJqP6NFcEtHV1l+iLVxl9zWCyxtnJt6XtiYjQ==~1; AGEVERIFY=Over21; _abck=01443C4B3543715EDF1C2ADDDD30FC8C~0~YAAQpugtFxyIXCaZAQAAzLDcKg52YFqp8tLgVckHm5Nu3m0B8qCnrsaMtBorkR4GtVgywMbg6SMpxXfYZf4WoRStT0tqyXRjf94fDL4ttZl/ee9yA2Baov+OocMxUD1XLScPuSlRmHOUjOb1p1wv8IJEP/s/pOV0Rdzw7UMZDxnDDUfqU03Z8+AgtDUMNv/aA1brFfSvmPIW2TEgvnLN42jFeVTJfqk4n9g/GoeqniHoldmzqHZgUZqrPRjC1GTEdK0B3f68pZsMDwUaqs01WdlxHeq3mzzQZ24Ac/144Iv+MR98iI/JLCV7es18SWBT92q8RyK5qXOeIpQgBR/nZrn1/UdBGq9FtaqJa2syUSNN4aobPLcZQh+4Kqup/8owIVl/IoxNOnsz4NVQWwcQFzKyMuZElayMA5w0HablHsNPjOio7yeuf7tubGTwmjj752MwzMm9hvkgkpz9L8Nif6D8z2GCV2vbS+LttBnea5YkxM4wVy9svdC+7Yg9KIFAA4ImQ0ZvyPYS+QdnmiXnHAdgtgbAnd6VKtCx3HMyQm7jNBetz9LxlegdBafJYTsX0+4jcBARjzrbx4Ztt1+hB5w5hfMutQAIqhTGGj3iddftG4gHvVTOYSo4IBjrofk5LmxbvwkQ2r1LhrWzDv9pFCsqyUAMhYSfi0LXqH9YouyaaUGukNjCwumFgXOJ20EISl3ryTy+DGPK1VN2D6lTAoAsuhi0vmDjKfXWEW7ZA2RepJhhJ/Kmz4ZKhtLhZSOnog9Jsq0baIykLgwPqS06UpzApEhBi2lidg5mt/jHzg4hdniEaXa9IJfOmese3yDeW8SVmJfVgv0oYbWl6DRWSwt8QAQyvlYyu9HXuJdGXg7e7CBuRBVDz0YFjG0b9L68i/WPRVee8GSSU98QgMF+i9FvNu3UrZ1PrhjzJbvxxCoO7Bf9JmqithM=~-1~-1~1757364328~~; xda8383328c1PRD_siteUS=1377-uhNRhQQ1JaMw5SGmkaVwWo1Al7jrjhcJLxVaE03W7w88D3%3A1756157616898%3A1756924017195%3A1757360730550%3A384683%3A2; xva8383328c1PRD_siteUS=-284c077c%3A1992ab3b2dd%3A7cbd-4094315784; _vuid=cc821b87-5f40-40dd-bfd5-a179a1b8dc53; __adroll_fpc=18d3af3c8ccf3a64cf5791668c0125d0-1753458337577; _ga=GA1.1.473316754.1753458337; _ga_Y3ZSL11TM0=GS2.1.s1757360729$o24$g0$t1757360729$j60$l0$h0; _pin_unauth=dWlkPVkyWTVaRGsxTW1JdFpHTXlNQzAwTnprNUxXRmhZak10TkRabFpUQmhaamRsWkRWag; ak_bmsc=B33818A8DB11AECCBD96E1E2AFDD39A6~000000000000000000000000000000~YAAQpugtF+KFXCaZAQAAGKzcKh057f6qKe6MzhpHigfZMnBPd9t6tsrBbjFn99oTYa+/jCtJ4x6PN2/Rdj5ttj77REc4+UB4qsT2rCFHTU07/A3KfpI6Z6p/J0Q/M+xmSW2Z9risc5teaQlLIQnj6KDm9us0fZn5SU28YoyJhN6GOE3TPkj4D0x3iKnuSUOQPOi3PfzChGeluRxJkbFdH5uPxejHRU2OkhEcbl+E4f6JQmdE7gW3cyv7veiN9n0eXQEZ+UHW3JUobJUmAEXD4LwJbSEIP52RKuEg6+bH9vdI3RhpK3xf9r7Iu2g6kHohYTPlvyLcf4WFa9TElaQkWF/0EwcTM3UW7fn9C/wyff+2pJe/dL8r07320ooxf3UBBun7KKluehy2shhFR6yZmbqVB3v5eWKYmyVUuzm3g80vrY5W+DkpSqyIjzwKjJFaHwO+0v09cZiERXXuL6oDNmRBSAWXU+CC3XFQJFt+603iWr2cZZXRxeomC7Q5OpSwjzaFNokB22o=; bm_sz=92536D56896F657C60C10F43B38F654A~YAAQpugtF6OGXCaZAQAAtq3cKh0Ublf2SWHGyzfy18xS9eTWzSOpE3NLYiL06sl6izw6wPeLDfRDgbQ7w8mal10I8nWdebUxVC9NsZKnWve4bwyrMZvXGIGWL9iEakqZ/AUsvy0WM4HQZMyMqEthZY7/UoqHHVzgLB/qbk8cycYIIg+mtg+3kaJOs2uJ+6x5JC0FEe/5ZNZd8rT26jeelmKN4ds5N96jb5+wm7Tx831PzyCEcoWmsAgKvY7TpDNyWtAj7ktuXIN8ilOxEiARaYY/CJs+ZIDRQIAssI9GF4Xp/SBPciOfv7RymJfVKh0u9NKqtcza94tJn99vrUrcbpq2Sa6NDNRIbZNHL7q1L9p9la8GKpMPvP8a0LzNUnCXzuDzqeQchrAnVj2Uo2SSlxU+ZMDGexCNd58YSYxY+pTtn9Gv2LGbkXV3Cw5YZ5DGTvSwD6LpdC3kLRsULA==~3228978~3289670; __ar_v4=H422MU2HOBC4HLZGUQMCAG%3A20250824%3A8%7CYEV7UUOV4NHJNEIGTN5CUO%3A20250824%3A8; BOPISENABLED=True; JSESSIONID=J8Eq3KwuBrjTeU2DqzwPXwnaCY6RnsS_Tf0VYooE4BlCIH00hK9l!-1039427027; ccstoreroute=67088b14ba2ec5ab09aa18e18834fed9|cc2d3787e8999f4a634b9d592c9e2268; BVBRANDSID=08f8d86d-0171-44ac-a143-3aac88633115; GSIDyk8q9gLSz40L=d28015df-c4fc-4c07-be79-eb54221c22b5; STSID148379=d784aa87-50e0-459f-aa23-5d0b715a95cb; ltkSubscriber-Footer=eyJsdGtDaGFubmVsIjoiZW1haWwiLCJsdGtUcmlnZ2VyIjoibG9hZCIsImx0a0VtYWlsIjoiIn0%3D; ltkpopup-session-depth=1-2; osfliveuiroute=470fe6b95f3569a6cecd0f3974357df8|a271690a033ecd4ba18a69565eca7c19; storePriceListGroupId=defaultPriceGroup; ltkpopup-suppression-8e9eb133-da66-408a-880e-6f4844cae736=1; __pdst=1080d8749e324574b21197d7889d8054; BVBRANDID=38466caa-05d1-47b0-a46d-d7582b39e1d9',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15',
'Sec-Fetch-Dest': 'empty',
'Origin': 'https://www.finewineandgoodspirits.com',
'Sec-Fetch-Site': 'same-origin',
# 'Content-Length': '72',
'Accept-Language': 'en-US,en;q=0.9',
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
# 'Accept-Encoding': 'gzip, deflate, br',
'Sec-Fetch-Mode': 'cors',
'X-CCVisitorId': '1377-uhNRhQQ1JaMw5SGmkaVwWo1Al7jrjhcJLxVaE03W7w88D3',
'X-CCSite': 'siteUS',
'X-CC-MeteringMode': 'CC-NonMetered',
'X-CC-Frontend-Forwarded-Url': 'www.finewineandgoodspirits.com/',
'X-CCVisitId': '-284c077c:1992ab3b2dd:7cbd-4094315784',
'Priority': 'u=3, i',
'X-CCAsset-Language': 'en',
'X-CCProfileType': 'storefrontUI',
'X-CCPriceListGroup': 'defaultPriceGroup',
}
data = {
'grant_type': 'password',
'username': '[email protected]',
'password': 'pythtest123',
}
response = requests.post('https://www.finewineandgoodspirits.com/ccstore/v1/login', cookies=cookies, headers=headers, data=data)
loginResponse = requests.post('https://www.finewineandgoodspirits.com/ccstore/v1/login', cookies=cookies, headers=headers, data=data)
if loginResponse.status_code ==200:
print(f"============================================================")
print("Successful Login!" )
print(f"============================================================")
else:
print("You suck ", loginResponse.status_code)
It can be hard to get cookies and all info needed for login,many time have to use
session with Requests to not lose info. Try an other approch eg Selenum, Playwright. This push age verification button and try to login. from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
# Setup
#https://storage.googleapis.com/chrome-for-testing-public/140.0.7330.0/win64/chromedriver-win64.zip
options = Options()
#options.add_argument("--headless=new")
ser = Service(r"C:\cmder\bin\chromedriver.exe")
browser = webdriver.Chrome(service=ser, options=options)
# Parse or automation
url = "https://www.finewineandgoodspirits.com/"
browser.get(url)
time.sleep(3)
age_vertify = browser.find_element(By.CSS_SELECTOR, 'div.age-gate__cta > button')
age_vertify.click()
login = browser.find_element(By.CSS_SELECTOR, 'div.authentication-header.authenticaticon.authenticaticon-desktop > button')
login.click()
time.sleep(3)
# Form action
email = browser.find_element(By.CSS_SELECTOR, '#authentication_header_login_form_email')
email.send_keys('[email protected]')
password = browser.find_element(By.CSS_SELECTOR, '#authentication_header_login_form_password')
password.send_keys('12345')
login = browser.find_element(By.CSS_SELECTOR, 'div.LoginForm > form > button')
login.click()
Sep-15-2025, 02:24 PM
snippsat,
Sorry for the late reply, just seeing this now. I'll try your code this afternoon and report back. One question for the line below- do I have to do anything with it? Uncomment it, or add something to the line? All other lines make sense to me. #options.add_argument("--headless=new") Thanks!
headless mean that browser do not open.
So when start parsing want to see browser that all button/command is typed in and work. Later can use headless,so browser do not open.
Sep-17-2025, 05:56 PM
(This post was last modified: Sep-17-2025, 08:41 PM by CaptainNewb.)
Understood, thank you. That worked! And much cleaner than all of my attempts
I have some more work to do because I'd like to see if I can test finding a bottle and then ultimately add it to the cart. I'm sure you'll be hearing from me again. Thank you!
|
|
|