Giter Site home page Giter Site logo

futpuppeteer's Introduction

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

futpuppeteer's People

Contributors

mdrichardson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

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.