Coder Social home page Coder Social logo

philippnormann / nvidia-sniper Goto Github PK

View Code? Open in Web Editor NEW
394.0 29.0 99.0 20.8 MB

๐ŸŽฏ Autonomously buy Nvidia Founders Edition GPUs as soon as they become available.

Python 100.00%
nvidia bot checkout sniper automation selenium firefox python

nvidia-sniper's Introduction

nvidia-sniper discord donate

This bot helps us buy Nvidia Founders Edition GPUs as soon as they become available.

Note: This project is no longer being actively maintained. Nvidia stopped selling Founders Edition cards through their own store and transitioned to exclusively selling via 3rd-party retailers. To buy from those 3rd-party retailers, you can check out other projects like streetmerchant or fairgame.

Features

  • Continuously monitor the availability of target GPU on www.nvidia.com
  • Automatically checkout item using PayPal or as guest (credit card)
  • Automatically submit the order for credit card payment
  • Support for multiple locales (as defined in config/customer.json)
  • Support for multiple GPUs (as defined in data/gpus.json)

screencast

Contents

Supported GPUs

  • GeForce RTX 3090
  • GeForce RTX 3080
  • GeForce RTX 3070
  • NVIDIA TITAN RTX
  • GeForce RTX 2080 Super
  • GeForce RTX 2070 Super
  • GeForce RTX 2060 Super

Installation

To run the bot, we need the following things:

  • Python 3.8
  • Pipenv
  • Firefox

Linux (Ubuntu)

sudo apt install firefox python3 pipenv
cd nvidia-sniper
pipenv install

Mac

  1. Install the latest version of Firefox
  2. Install brew package manager
  3. Install Pipenv using
    • brew install pipenv
  4. Navigate to project directory using
    • cd nvidia-sniper
  5. Install project dependencies using
    • pipenv install

Windows

  1. Check if you already have a Python 3.8 installation by opening Windows PowerShell and executing python --version
    • If you see Python 3.8.0 or higher, skip to step 4, otherwise continue to step 2
  2. Install the latest Python 3.8 for Windows
    • Click Add Path at the bottom of the first installation page.
  3. Install the latest version of Firefox
  4. Exit all PowerShell windows, then open a new PowerShell and install Pipenv using
    • pip install pipenv
  5. Navigate to project directory
    • If you downloaded (using git clone, or ZIP and extract) the project to C:\Users\user\Documents\nvidia-sniper, then use the following command: cd C:\Users\user\Documents\nvidia-sniper
  6. Install project dependencies using
    • pipenv install
  7. Install curses for Windows using
    • pipenv install windows-curses
If step 6 results in `pipenv : The term 'pipenv' is not recognized`
  1. Setup a virtual environment using
    • python -m venv .venv
  2. Ensure you have the latest Python version using
    • python -m venv --upgrade .venv
  3. Activate the virtual environment using
    • .venv/Scripts/activate
  4. Install pipenv again using
    • pip install pipenv
  5. Install project dependencies using
    • pipenv install
  6. Install curses for Windows using
    • pipenv install windows-curses
If you get `python : The term 'python' is not recognized` even after installing Python 3.8
  1. Open the Start menu and enter PATH, then press Enter
  2. Click the Environment Vairables... button
  3. In the User variables for user section, click the variable Path, then click the Edit... button
  4. A new window called Edit environment variable will pop up, ensure C:\Users\<username>\AppData\Local\Programs\Python\Python38\Scripts and C:\Users\<username>\AppData\Local\Programs\Python\Python38 exists in this list, where <username> is your username in Windows
  5. If these paths are not in the list, add them using the New button
  6. Remove all other PATHs which contain anything to do with Python, Pip, or Idle by clicking them, then clicking the Delete button
  7. Click OK to close the Edit environment variable window
  8. Click OK to close the Environment Variables window
  9. Click OK to close the System Properties window

CAPTCHA

This bot is equipped with the ability to resolve simple reCAPTCHA on its own without the use of a third party reCAPTCHA solver. As long as you follow the recommendation in the usage section below, it is extremely likely that the bot will succesfully complete the full auto-checkout process. With that said, there is a very small possibility that you will be presented with a more advanced reCAPTCHA requiring solving image tasks that the bot cannot handle natively. If you would like to have a backup in place for that possibility, you have that option by following the steps below.

  1. Download the ReCaptcha Solver extension using the link https://addons.mozilla.org/firefox/downloads/file/3423472/recaptcha_solver-5.7-fx.xpi. If you open this link in Firefox, it will automatically attempt to add the extension to your browser. That's not what we want. Right click the link and select "Save link as" to download the *.xpi file or try opening the link in a browser other than Firefox.

  2. Put the *.xpi file inside the root of the nvidia-sniper directory.

    folder
  3. Create an account using one of ReCaptcha Solver's supported APIs, ex. 2captcha. Deposit money into your account. A few ๐Ÿ’ต should be enough.

  4. Start the bot as per the instructions in the Usage section. After you go through the bot's selection process, you should see the ReCaptcha Solver extension in the browser.

  5. Copy your API key from the provider of your choice. Add this key to the extension. Also, enable the checkboxes as shown below.

    ReCaptcha Solver

Updating

To update nvidia-sniper use, git pull or download a fresh .zip archive from GitHub.

Make sure to back up the customer.json in advance as it might get replaced in the process.

Usage

To use the bot, fill out config/customer.json and run the script.

cd nvidia-sniper
pipenv run python -m sniper

It is highly recommended that you use Firefox as your default browser and use it to log into Google services such as YouTube or Gmail. This dramatically reduces the possibility of reCAPTCHA requiring you to pass an image challenge during the bot's operation, thus enabling a fully automatic checkout without the need for manual intervention.

Configuration

In the config folder a customer.json file and notifications.json file are used to configure the data used to auto fill the forms and to configure the bots notifications. To get started, copy and rename the two template files and customize the fields to your liking.

notifications.json

The bot can send multiple push notifications, including a screenshot attachment along the checkout process. See https://github.com/caronc/apprise#supported-notifications for more information. Add additional entries to the services dictionary in the notifications.json file for multiple providers. For each notification, a custom message can be set. Additionally, the screenshot attachment can be toggled per provider.

A couple of example URLs for different notification services:

  • pover://user@token: Pushover
  • tgram://bottoken/ChatID: Telegram
  • discord://webhook_id/webhook_token: Discord

customer.json

In the customer.json file you can configure your locale and the field contents used for auto-filling the checkout forms. Some fields require specific values.

locale

The locale field can have the following values:

  • de-at: Austria
  • fr-be: Belgium
  • en-ca: Canada
  • cs-cz: Czech Republic
  • da-dk: Denmark
  • fi-fi: Finland
  • fr-fr: France
  • de-de: Germany
  • it-it: Italy
  • nl-nl: Netherlands
  • nb-no: Norway
  • pl-pl: Poland
  • es-es: Spain
  • sv-se: Sweden
  • en-gb: United Kingdom
  • en-us: United States

speed

The speed field can have the following values:

  • shippingOptionID2: Standard Ground
  • shippingOptionID3: Next Business day Afternoon
  • shippingOptionID4: Second Business Day Afternoon

backup-speed

There has been a common issue related to shipping speeds not being available when cards are available.

  • true: (Default) Fallback to using the standard shipping speed when the desired speed isn't available
  • false: Stop the bot from continuing with checkout

country

The country field can have the following values:

  • AT: Austria
  • BE: Belgium
  • CA: Canada
  • CZ: Czech Republic
  • DK: Denmark
  • FI: Finland
  • FR: France
  • DE: Germany
  • IT: Italy
  • NL: Netherlands
  • NO: Norway
  • PL: Poland
  • ES: Spain
  • SE: Sweden
  • GB: United Kingdom
  • US: United States

state

For en-us and en-ca locale, the state field can have the following values:

  • AL: Alabama
  • AK: Alaska
  • AB: Alberta
  • AS: American Samoa
  • AZ: Arizona
  • AR: Arkansas
  • AA: Armed Forces America
  • AE: Armed Forces Europe
  • AP: Armed Forces Pacific
  • BC: British Columbia
  • CA: California
  • CO: Colorado
  • CT: Connecticut
  • DE: Delaware
  • DC: District Of Columbia
  • FM: Federated States of Micronesia
  • FL: Florida
  • GA: Georgia
  • GU: Guam
  • HI: Hawaii
  • ID: Idaho
  • IL: Illinois
  • IN: Indiana
  • IA: Iowa
  • KS: Kansas
  • KY: Kentucky
  • LA: Louisiana
  • ME: Maine
  • MB: Manitoba
  • MH: Marshall Islands
  • MD: Maryland
  • MA: Massachusetts
  • MI: Michigan
  • MN: Minnesota
  • MS: Mississippi
  • MO: Missouri
  • MT: Montana
  • NE: Nebraska
  • NV: Nevada
  • NB: New Brunswick
  • NH: New Hampshire
  • NJ: New Jersey
  • NM: New Mexico
  • NY: New York
  • NL: Newfoundland and Labrador
  • NC: North Carolina
  • ND: North Dakota
  • MP: Northern Mariana Islands
  • NT: Northwest Territories
  • NS: Nova Scotia
  • NU: Nunavut
  • OH: Ohio
  • OK: Oklahoma
  • ON: Ontario
  • OR: Oregon
  • PW: Palau
  • PA: Pennsylvania
  • PE: Prince Edward Island
  • PR: Puerto Rico
  • QC: Quebec
  • RI: Rhode Island
  • SK: Saskatchewan
  • SC: South Carolina
  • SD: South Dakota
  • TN: Tennessee
  • TX: Texas
  • UT: Utah
  • VT: Vermont
  • VI: Virgin Islands
  • VA: Virginia
  • WA: Washington
  • WV: West Virginia
  • WI: Wisconsin
  • WY: Wyoming
  • YT: Yukon

nvidia-sniper's People

Contributors

ataraksia avatar dependabot[bot] avatar ericchansen avatar finnedscript avatar gpadiernos avatar hwamil avatar joshuahiggins avatar krcm0209 avatar penguax avatar philippnormann avatar russellocean avatar senaxx avatar vp-regular avatar wessec avatar xcrov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nvidia-sniper's Issues

Why

Why the fuck would you make this? this is just a contributor to destroying the GPU market...

Issues with Notifications

Hello,
For some reason I keep on getting this error:
ERROR:root:Error while parsing the notification configuration file, check config/notifications.json for syntax errors and fix them to continue.

Here is my notifications.json config file (I inserted the corresponding values into INSERT_HERE.):

    "notifications": {
        "started": {
            "message": "Nvidia Sniper Started! ๐Ÿ•น๏ธ",
            "enabled": true
        },
        "availability": {
            "message": "Quick, before it is gone! ๐Ÿƒโ€โ™‚๏ธ",
            "enabled": true
        },
        "add-to-basket": {
            "message": "Locked and loaded! ๐Ÿ”ซ",
            "enabled": true
        },
        "checkout": {
            "message": "Checkout complete! โœ…",
            "enabled": true
        },
        "submit": {
            "message": "SNIPED! ๐ŸŽฏ",
            "enabled": true
        },
        "captcha-fail": {
            "message": "Failed to CAPTCHA that card! ๐Ÿค–",
            "enabled": true
        }
    },
    "services": {
        "apprise-1": {
            "url": "discord://INSERT_HERE/INSERT_HERE",
            "screenshot": true
        }
    }
}

[BUG] Bot crashes after filling out adress and before filling out CC details (de)

I tested several times with the RTX 2060s which is in stock on the german nvidia store.

It added to cart
entered the Adresse
and then entered the credit card number
but it crashes before filling the expiration date of the CC (its two different dropdown menus)
info stays blank and the bot crashes with this error log:

Traceback (most recent call last):
File "c:\users\johnc\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main
return run_code(code, main_globals, None,
File "c:\users\johnc\appdata\local\programs\python\python38\lib\runpy.py", line 87, in run_code
exec(code, run_globals)
File "C:\Users\JohnC\Documents\GitHub\nvidia-sniper\sniper_main
.py", line 254, in
loop.run_until_complete(main())
File "c:\users\johnc\appdata\local\programs\python\python38\lib\asyncio\base_events.py", line 616, in run_until_complete
return future.result()
File "C:\Users\JohnC\Documents\GitHub\nvidia-sniper\sniper_main
.py", line 220, in main
nvidia.checkout_guest(
File "C:\Users\JohnC\Documents\GitHub\nvidia-sniper\sniper\nvidia.py", line 246, in checkout_guest
fill_out_form(driver, timeout, customer)
File "C:\Users\JohnC\Documents\GitHub\nvidia-sniper\sniper\nvidia.py", line 187, in fill_out_form
month_select.select_by_value(customer['credit']['expiration']['month'])
File "C:\Users\JohnC.virtualenvs\nvidia-sniper-EfFatCyt\lib\site-packages\selenium\webdriver\support\select.py", line 87, in select_by_value
raise NoSuchElementException("Cannot locate option with value: %s" % value)
selenium.common.exceptions.NoSuchElementException: Message: Cannot locate option with value: 02

Testing

Hello how do i test it without actually buying the rtx2060? Thank you.

API Inventory Failure 28th Sept

Looks like the api has changed again? Is this something we can fix?

2020-09-28 23:04:02,066 nvidia-sniper: Failed to get inventory status for 5438792700
Traceback (most recent call last):

  File "/Users/<username>/Documents/nvidia-sniper/sniper/__main__.py", line 47, in checkout_api
    inventory = await api.get_inventory_status(session, dr_locale, api_currency, dr_id)

  File "/Users/<username>/Documents/nvidia-sniper/sniper/api.py", line 22, in get_inventory_status
    json_resp = await response.json()

  File "/Users/<username>/.local/share/virtualenvs/nvidia-sniper-V5mCHnvd/lib/python3.8/site-packages/aiohttp/client_reqrep.py", line 1026, in json

    raise ContentTypeError(

aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/html', url=URL('https://api-prod.nvidia.com/direct-sales-shop/DR/products/en_gb/GBP/5438792700')

feature request: automatically bring firefox into focus if recaptcha challenge intervention is necessary

Background

Some people do not have enough screen real estate to keep Firefox visible at all times, especially if they use the same PC for work and need to have other windows open and over top of Firefox. One could potentially miss out on a card if Sniper needs recaptcha challenge input and the user doesn't hear the notification(s).

Proposal

Update Sniper so that it has the capability to bring the Firefox window back into focus, above other windows, if it encounters a recaptcha challenge for which it needs manual intervention.

30xx only being listed at Best Buy. BB support?

What's the plan here? Nvidia said they are no longer listing founder edition cards on their website and they will be exclusively listed on Best buy. Without Best buy functionality this bot will no longer be able to acquire cards for us. Are there plans to integrate Best buy purchasing support? Even if we can't get full purchasing support just getting a cart URL would be great.

Could you please add address line 2

Unfortunately when checking out i need address line 2 in order for the company im reshipping with to my location to know the parcel is allocated to me / my locker kind of thing. If you could add this that would be fricken amazing, many thanks!

login support?

i have nvidia.com account with previous purchase history, credit card, and shipping address. i have saved my login credentials in the browser. is there anyway use this saved credentials in the browser and login when checking out and automatic purchasing?

Issues with Notifications Again

Hello,

I am still receiving the same issues with notifications. On my last issue, I had accidentally copied and pasted my JSON wrong. I have verified my JSON with jsonlint and it's valid.

ERROR:root:Error while parsing the notification configuration file, check config/notifications.json for syntax errors and fix them to continue.

{
    "notifications": {
        "started": {
            "message": "Nvidia Sniper Started! ๐Ÿ•น๏ธ",
            "enabled": true
        },
        "availability": {
            "message": "Quick, before it is gone! ๐Ÿƒโ€โ™‚๏ธ",
            "enabled": true
        },
        "add-to-basket": {
            "message": "Locked and loaded! ๐Ÿ”ซ",
            "enabled": true
        },
        "checkout": {
            "message": "Checkout complete! โœ…",
            "enabled": true
        },
        "submit": {
            "message": "SNIPED! ๐ŸŽฏ",
            "enabled": true
        },
        "captcha-fail": {
            "message": "Failed to CAPTCHA that card! ๐Ÿค–",
            "enabled": true
        }
    },
    "services": {
        "apprise-1": {
            "url": "discord://INSERT_HERE/INSERT_HERE",
            "screenshot": true
        }
    }
}

SyntaxError: invalid syntax

Hello there . Me again. I uploaded the main.py file you updated 1 hour ago. I am getting the following error:

Traceback (most recent call last):
File "c: \ users \ pc \ appdata \ local \ programs \ python \ python38 \ lib \ runpy.py", line 185, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details (mod_name, _Error)
File "c: \ users \ pc \ appdata \ local \ programs \ python \ python38 \ lib \ runpy.py", line 144, in _get_module_details
return _get_module_details (pkg_main_name, error)
File "c: \ users \ pc \ appdata \ local \ programs \ python \ python38 \ lib \ runpy.py", line 155, in get_module_details
code = loader.get_code (mod_name)
File "", line 916, in get_code
File "", line 846, in source_to_code
File "", line 219, in call_with_frames_removed
File "C: \ nvidia-sniper \ sniper \ __ main
.py", line 6
<! DOCTYPE html>
^
SyntaxError: invalid syntax

What should I do ?

bug: Selenium error when running on Arch or Gentoo flavor of linux

There is a bug in geckodriver where any system that replaces /usr/bin/firefox with a script that executes the real binary will fail

Failure will present like this

[WDM] - Driver [/home/<USER>/.wdm/drivers/geckodriver/linux64/v0.27.0/geckodriver] found in cache
Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/<USER>/projects/nvidia-sniper/sniper/__main__.py", line 46, in <module>
    driver = webdriver.create()
  File "/home/<USER>/projects/nvidia-sniper/sniper/webdriver.py", line 38, in create
    return webdriver.Firefox(firefox_profile=profile, executable_path=GeckoDriverManager().install())
  File "/home/<USER>/.local/share/virtualenvs/nvidia-sniper-g1iyIxjU/lib/python3.8/site-packages/selenium/webdriver/firefox/webdriver.py", line 170, in __init__
    RemoteWebDriver.__init__(
  File "/home/<USER>/.local/share/virtualenvs/nvidia-sniper-g1iyIxjU/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/<USER>/.local/share/virtualenvs/nvidia-sniper-g1iyIxjU/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/<USER>/.local/share/virtualenvs/nvidia-sniper-g1iyIxjU/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/<USER>/.local/share/virtualenvs/nvidia-sniper-g1iyIxjU/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities

It is mentioned here:
SeleniumHQ/selenium#8604
Despite the last comment there, upstream doesn't seem to be tracking it at geckodriver. Adding the path to the actual firefox binary into $PATH works around the issue on Gentoo Linux. In specific, I can launch nvidia sniper using PATH="/usr/lib64/firefox:$PATH" pipenv run python -m sniper.

Question about "country"

First of all you my friend are a hero for doing this so thank you.

In the customer.json billing section my country is not listed and on Nvidia site i can choose "not applicable" so im not sure how to type that in the json since it uses US/DE etc format?
And how do I test it if it's working correctly after I'm done setting everything up?

Post Code not automatically converted to correct format

Noticed that order didn't go ahead and froze the script due to UK postcode not having a space in the middle of it. Would be useful if either postcodes were automatically formatted to the correct format accepted by the site, or put it in the read me file a notification for users to check what format their postcode needs to be in on the site before writing it into the customer.json file.

Blank Screenshots

Everything seems to be working fine; however, when using notifications is the first screenshot supposed to be blank or is it supposed to be the loading page for that specific GPU? I attached a photo of the image I am receiving.

photo_2020-09-28_20-54-31

captcha at final submit page

captcha at final confirm order page, I think this is new? Not sure if it appears to all or only if you've been running for a while - I was monitoring the 3080 for a few hours then ran a 2060S test and saw it at the final step. If you have images disabled the captcha images will not load either.
unknown

unknown (1)

Checking Availability via API error

The below has started to show this evening. Selenium seems to work fine:

2020-10-01 21:32:16,581 nvidia-sniper: Checking en-gb availability for GeForce RTX 3080 using selenium...
2020-10-01 21:32:23,142 nvidia-sniper: GPU currently not available
2020-10-01 21:32:23,142 nvidia-sniper: Checking en-gb availability for GeForce RTX 3080 using API...
2020-10-01 21:32:42,781 nvidia-sniper: Failed to get inventory status for 5438792800
Traceback (most recent call last):
File "C:\nvidia-sniper\sniper_main_.py", line 49, in checkout_api
inventory = await api.get_inventory_status(session, dr_locale, api_currency, dr_id)
File "C:\nvidia-sniper\sniper\api.py", line 22, in get_inventory_status
json_resp = await response.json()
File "C:\Users<username>.virtualenvs\nvidia-sniper-Fu40Ck5x\lib\site-packages\aiohttp\client_reqrep.py", line 1026, in json
raise ContentTypeError(
aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/html', url=URL('https://api-prod.nvidia.com/direct-sales-shop/DR/products/en_gb/GBP/5438792800')

Alternate shipping caused order to fail

During last drop. the sniper crashed because css wasn't properly loaded (probably due to server load), this caused the alternative shipping address to fail and make the script crash.

I would suggest a feature where alternative shipping is disabled, this would also speed up the bot as 99% will eventually use the same invoice as shipping address.

Trace of the crash

2020-10-01 20:06:22,670 nvidia-sniper: Checking out as guest...
2020-10-01 20:06:24,534 nvidia-sniper: Sent Pushover notification to ALL_DEVICES.
Traceback (most recent call last):
  File "/home/wessel/Desktop/nvidia-sniper/sniper/nvidia.py", line 140, in fill_out_form
    driver.find_element(By.ID, 'shippingName1').send_keys(
  File "/home/wessel/.local/share/virtualenvs/nvidia-sniper-iktqfT3h/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 477, in send_keys
    self._execute(Command.SEND_KEYS_TO_ELEMENT,
  File "/home/wessel/.local/share/virtualenvs/nvidia-sniper-iktqfT3h/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "/home/wessel/.local/share/virtualenvs/nvidia-sniper-iktqfT3h/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/wessel/.local/share/virtualenvs/nvidia-sniper-iktqfT3h/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: Element <input id="shippingName1" name="SHIPPINGname1" type="text"> is not reachable by keyboard


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/wessel/Desktop/nvidia-sniper/sniper/__main__.py", line 254, in <module>
    loop.run_until_complete(main())
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/home/wessel/Desktop/nvidia-sniper/sniper/__main__.py", line 220, in main
    nvidia.checkout_guest(
  File "/home/wessel/Desktop/nvidia-sniper/sniper/nvidia.py", line 246, in checkout_guest
    fill_out_form(driver, timeout, customer)
  File "/home/wessel/Desktop/nvidia-sniper/sniper/nvidia.py", line 150, in fill_out_form
    WebDriverWait(driver, timeout).until(shipping_visible)
  File "/home/wessel/.local/share/virtualenvs/nvidia-sniper-iktqfT3h/lib/python3.8/site-packages/selenium/webdriver/support/wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

I get the following error when I try to launch the bot

When I get to the very last command "pipenv run python -m sniper" I get the following error:

ERROR:root:Could not import all required modules. Please run the following command again:

    pipenv install

I have already done "pipenv install" and it had no issues. I did it again after the error to verify,, and I get "Requirement already satisfied" on every item it runs through.

FYI my coding is very limited, but I am a network admin so I can follow syntax and have ran through it a couple of times to make sure I'm not missing anything. Thoughts?

Stops at recaptcha

Does not auto checkout stop at recaptcha even though i cant see the recaptcha. Also it is slower at adding to cart than other bots out there, can that be improved?

log:

2020-09-24 09:42:09,374 nvidia-sniper: An invalid Pushover Access Token (token) was specified.
2020-09-24 09:42:09,374 nvidia-sniper: Could not load Pushover URL: pover://user@token
2020-09-24 09:42:09,614 nvidia-sniper: Clicking pre checkout reCAPTCHA!

Failed to locate Digital River ID on product page

2020-10-05 15:01:27,360 nvidia-sniper: Checking en-us availability for GeForce RTX 3090 using selenium...
2020-10-05 15:01:43,297 nvidia-sniper: GPU currently not available
2020-10-05 15:01:43,297 nvidia-sniper: Checking en-us availability for GeForce RTX 3090 using API...
2020-10-05 15:01:44,475 nvidia-sniper: Failed to locate Digital River ID on product page

Is this how it is supposed to look? Concerned with the "Failed to locate Digital River ID on product page" portion.

Captcha Extension not showing up in browser

Hey Guys,

I downloaded the captcha.xpi file and put in the root of the Nvidia-Sniper directory. (ie user/downloads/nvidia-sniper) but when I ran the Nvidia-Sniper bot and the Firefox browser opened I don't see that the captcha extension is there. Am I doing something wrong?

Fraud Detection will mess you up

I really liked this repository, but I am concerned that automated payment via Browser Automation will trigger Paypals Fraud Detection and will mess up your day.

Problem

Hi. I updated the program. I am getting the following error. I don't know where to post on given nvidia-snatcher discord channel. Can you help me ?

ERROR:root:Could not import all required modules. Please run the following command again:
pipenv install

Failed to Get inventory Status using API

Running on windows, getting this error when checking for inventory with API

2020-09-25 17:22:34,820 nvidia-sniper: Checking en-us availability for GeForce RTX 3080 using selenium...
2020-09-25 17:22:53,622 nvidia-sniper: GPU currently not available
2020-09-25 17:22:53,622 nvidia-sniper: Checking en-us availability for GeForce RTX 3080 using API...
2020-09-25 17:23:12,158 nvidia-sniper: Failed to get inventory status for 5438481700
Traceback (most recent call last):
File "C:\nvidia-sniper\sniper_main_.py", line 47, in checkout_api
inventory = await api.get_inventory_status(session, dr_locale, api_currency, dr_id)
File "C:\nvidia-sniper\sniper\api.py", line 22, in get_inventory_status
json_resp = await response.json()
File "C:\Users\usr.virtualenvs\nvidia-sniper-Fu40Ck5x\lib\site-packages\aiohttp\client_reqrep.py", line 1026, in json
raise ContentTypeError(
aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/html', url=URL('https://api-prod.nvidia.com/direct-sales-shop/DR/products//en_us/USD/5438481700')

Bug: WebDriverException: Failed to decode response from marionette

Got this exception after 12ish hours of running. No obvious cause apart from Firefox appearing to be closed when I returned.

Traceback (most recent call last):

  File "c:\users\<username>\appdata\local\programs\python\python38-32\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,

  File "c:\users\<username>\appdata\local\programs\python\python38-32\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)

  File "C:\Users\<username>\Desktop\nvidia-sniper\sniper\__main__.py", line 269, in <module>
    loop.run_until_complete(main())

  File "c:\users\<username>\appdata\local\programs\python\python38-32\lib\asyncio\base_events.py", line 616, in run_until_complete

    return future.result()

  File "C:\Users\<username>\Desktop\nvidia-sniper\sniper\__main__.py", line 230, in main
    checkout_reached = checkout_selenium(

  File "C:\Users\<username>\Desktop\nvidia-sniper\sniper\__main__.py", line 102, in checkout_selenium
    gpu_available = nvidia.check_availability(driver, timeout)

  File "C:\Users\<username>\Desktop\nvidia-sniper\sniper\nvidia.py", line 40, in check_availability
    WebDriverWait(driver, timeout).until(add_to_basket_clickable)

  File "C:\Users\<username>\.virtualenvs\nvidia-sniper-e_ejhjj8\lib\site-packages\selenium\webdriver\support\wait.py", line 71, in until
    value = method(self._driver)

  File "C:\Users\<username>\.virtualenvs\nvidia-sniper-e_ejhjj8\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 297, in __call__
    element = visibility_of_element_located(self.locator)(driver)

  File "C:\Users\<username>\.virtualenvs\nvidia-sniper-e_ejhjj8\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 128, in __call__
    return _element_if_visible(_find_element(driver, self.locator))

  File "C:\Users\<username>\.virtualenvs\nvidia-sniper-e_ejhjj8\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 415, in _find_element
    raise e

  File "C:\Users\<username>\.virtualenvs\nvidia-sniper-e_ejhjj8\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 411, in _find_element
    return driver.find_element(*by)

  File "C:\Users\<username>\.virtualenvs\nvidia-sniper-e_ejhjj8\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {

  File "C:\Users\<username>\.virtualenvs\nvidia-sniper-e_ejhjj8\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)

  File "C:\Users\<username>\.virtualenvs\nvidia-sniper-e_ejhjj8\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Failed to decode response from marionette```

Multitude of errors

Followed Directions (sorry, new to this). Received following errors:

C:\Users\usr\nvidia-sniper>pipenv run python -m sniper
Traceback (most recent call last):
File "c:\users\usr\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main
return run_code(code, main_globals, None,
File "c:\users\usr\appdata\local\programs\python\python38\lib\runpy.py", line 87, in run_code
exec(code, run_globals)
File "C:\Users\usr\nvidia-sniper\sniper_main
.py", line 6, in
import aiohttp
File "C:\Users\usr.virtualenvs\nvidia-sniper-1gkHHUZV\lib\site-packages\aiohttp_init
.py", line 6, in
from .client import BaseConnector as BaseConnector
File "C:\Users\usr.virtualenvs\nvidia-sniper-1gkHHUZV\lib\site-packages\aiohttp\client.py", line 32, in
from . import hdrs, http, payload
File "C:\Users\usr.virtualenvs\nvidia-sniper-1gkHHUZV\lib\site-packages\aiohttp\http.py", line 7, in
from .http_parser import HeadersParser as HeadersParser
File "C:\Users\usr.virtualenvs\nvidia-sniper-1gkHHUZV\lib\site-packages\aiohttp\http_parser.py", line 15, in
from .helpers import NO_EXTENSIONS, BaseTimerContext
File "C:\Users\usr.virtualenvs\nvidia-sniper-1gkHHUZV\lib\site-packages\aiohttp\helpers.py", line 43, in
import async_timeout
ModuleNotFoundError: No module named 'async_timeout'

confusion on paypal

Sorry, this is more of a question than a raise.

There isn't a config for paypal info so are we simply to log in using the bot window or do I use regular firefox to login and gather cookies?

Also, on run we get to pick auto submit but it says it only works with credit card. This prompt is after choosing guest checkout or paypal checkout so it's a little confusing. As in, will it work if I have a credit card added to my paypal account or am I contradicting the previous parameter?

Thank you very much for writing this. I also wrote one using requests and selenium but your code is much more robust and elegant. Learning a lot from going through it.

Correct phone number format for US

I noticed that the customer template json has "-" in the phone number but I was wondering if I will need that for a US phone number. I'm assuming that i will not need a "+" and/or a country code. Thank you!

Address suggestion

The danish da-dk locale works perfectly! Was able to test it with a 2060S, however the address suggestion stopped the sniper in its tracks... I think it would be great with some sort of address suggestion bypass. Do you have any discord group for discussing development? :-) Cheers!

Question

Hello there . Thanks for your work.
I uploaded the latest updated version. Previously, the page was constantly refreshed in firefox. But in Mozilla Firefox, the page is no longer refreshed. However, it seems that your stock is being controlled in the program. Is it normal ?

getting error on run

File "c:\users\wader\appdata\local\programs\python\python38-32\lib\json\decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 25 column 9 (char 672)

da_dk locale

Hi! I would love to try this, but will it work for the danish locale? It would be awesome of that could work! Cheers

No module named 'aiohttp'

Running on mac, getting the following error :(

File "/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/runpy.py", line 87, in _run_code exec(code, run_globals) File "/Users/<username>/Documents/nvidia-sniper/sniper/__main__.py", line 6, in <module> import aiohttp ModuleNotFoundError: No module named 'aiohttp'

Latest build seems slower

Howdy,

I've been updating and testing your build daily and today's build seems slower compared to yesterday build. I noticed it during the checking out button process (after adding to cart, before adding personal information). Is it because of the notification send off command before it can proceed to next step? Just wanted to give my feedback. Thanks again!

discord link not working

Has the discord been updated to another server? The link on the page goes to a discord called nvidia snatcher.

Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.