Skip to content

mdrichardson/FUTpuppeteer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FUTpuppeteer FIFA 18 Ultimate Team Bot

Note: This does not work with FIFA 19. You can probably adapt it to do so, but I haven't been developing this for several months.

FIFA 19 FAQ

Q: Will you be making a bot for FIFA 19?

Not likely. You'll see updates here if I ever do, but I've got a lot more projects to work on before I can move onto this again.

Q: How do I avoid detection?

As far as I can tell, EA only monitors for:

  • mismatched HTTP request headers
  • PinEvents for HTTP requests that don't fire when they should
  • Too many requests (HTTP or clicks)
  • Too fast of requests (HTTP or clicks)
  • Being too slow to respond to CAPTCHA
  • Running for many hours in a day
  • Running for too long without a break

Q: Should I make an auto-clicker bot myself (with Selenium)

If I were to do it over again, I'd just build one off of oczkers' FUT API wrapper instead of Selenium.

There aren't any HTML elements the bot can pull for card IDs. This becomes a massive slow-down once special cards are released (TOTS, POTW, etc) and a single player has 5-6 cards.


Note: This repo is not meant for the public. You're welcome to use it, but I am not providing support and you'll need to be semi-experienced with Python to get it running.


FUTPuppeteer for FIFA 18

This is an auto-clicker bot used to trade players and items on FIFA Ultimate Team's Web App.

Click this image for a video demo that covers a few capabilities: FUTpuppeteer Demo

Key Features

  • Set-and-forget: runs everything automatically.
  • Can buy and sell players and some consumables using Buy It Now and/or auctions
  • Gathers SBC solutions, buys the players, and enters them into SBC solution, automatically
  • Can automatically manage transfer, watch, and unassigned lists
  • Can apply consumables to each individual member in any squad, optionally including subs and reserves (individual fitness, contracts, etc.)
  • Contains numerous strategies that can be customized easily
  • Desktop and AutoRemote (Android app) notifications
  • Stealth:
    • There was a big ban wave in early 2018. The commercial bots got hit. This one did not.
    • Uses randomized delays and off-center clicking to mimic human interactions
    • Uses randomized keep-alive
    • Customizeable maximum rate of user server requests
    • You can compile chromedriver yourself here and change key in call_function.js to something random, as seen here

Technical Features

  • Notifications for captcha, buy, sell, etc
  • Fairly verbose logging and console output
  • Price checks with Futbin or Futhead
  • Saves price data and user buy/sell data in sqlite database
  • IMAP support: can auto-login with 2-factor email authentication
  • Passwords are saved locally using OS's credential manager. They can optionally be encrypted with a master password

Limitations

  • Runs on Selenium to mimic human interactions for better stealth. This requires higher CPU and RAM usage as well as additional delays due to page load times that you wouldn't see with something that uses EA's API directly.
    • Try changing lag_multiplier in global.yml to something larger if you get errors because your comupter or connection are slow.
  • FUT web app doesn't differentiate well between similar cards of the same player (e.g. Gold Diego Costa with a club change).
    • In order to accurately get the price of the right card, all player card possibilities are grabbed from EA database and stored locally. Cards that appear in web app searches are then compared with those in the database and the closest match is returned. This is slightly slow and you will often be out-sniped by API-only bots.
    • When FIFA was first released, this wasn't an issue. But as more and more new card variations were released, this was the only way to solve this issue without direct API calls (which are less stealthy).
  • EA database must be manually updated. It takes ~10 minutes to complete. You can update it manually by executing update_player_data() in database.py.

Installation

Requirements

  • Python 3.5+ (only tested in v3.5)
  • Chromedriver 2.39+ (only tested in v2.39)
  • Python packages:
    • selenium
    • ruamel.YAML
    • signal
    • simple-crypt
    • requests
    • sqlite3
    • ast
    • json
    • re
  • Fast computer and internet connection
  • An understanding of Python

Steps to Install

  1. Install Python, Chromedriver, and Python packages

  2. Pull or clone this repo

  3. Rename config\botExample.yml to bot1.yml

    • Open it and input your user info at the bottom
  4. Rename config\globalExample.yml to global.yml

    • Input appropriate path_to_chromedriver_exe
    • Change other settings as needed
  5. Edit RunExample.py to your liking

    • There's a lot of examples in there. Comment in what you want to run and comment out what you don't. Read the code and change as necessary

To-Do

  • Add readmes to each folder
  • Add gif that shows bot operate

Needs to be done, but won't be unless I pick the project back up

  • Clean up code, refactor as necessary - After reading Clean Code, I realize the code could be a lot cleaner
  • Make install easier
  • Have it create databases from scratch
  • Have it auto-generate blank bot*.yml if Session(bot_number=*) doesn't exist
  • Store all settings in database, instead of yaml files
  • Completely refactor to use oczkers' FUT API wrapper instead of Selenium
    • The increased likelihood of being caught is worth the increased speed, unless web app security increases significantly in the future
      • Increased risk can be mitigated by frequently running a separate bot that logs in via Selenium (like this one) and compares all HTTP method parameters and cookies using BrowserProxyMob to make sure they match what oczker's API is sending
  • Write unit tests
  • This code is likely pretty inefficient. It could probably be made better by using more appropriate data structures and improving time and space complexity of some of the functions--especially the ones involving the player database and the ones that find sniping filters

About

This is an auto-clicker bot used to trade players and items on FIFA Ultimate Team's Web App.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages