• Stars
    star
    136
  • Rank 267,670 (Top 6 %)
  • Language
    Python
  • License
    MIT License
  • Created almost 3 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A GitHub Follow Bot that utilizes Django's web framework and Python. The bot comes with many features, but please use at your own risk. The bot was made for educational purposes.

GitHub Follow Bot

11-28-22

I'm not sure when I'll get around to finishing this tool due to other projects I'm working on. However, I wanted to note that mass following users is against GitHub's TOS (not stated below). Therefore, please use at your own risk!

Description

This is a GitHub Follow Bot made inside of a Django application. Management of the bot is done inside of Django's default admin center (/admin). The bot itself runs in the background of the Django application.

The bot works as the following.

  • Runs as a background task in the Django application.
  • Management of bot is done in the Django application's web admin center.
  • After installing, you must add a super user via Django (e.g. python3 manage.py createsuperuser).
  • Navigate to the admin web center and add your target user (the user who will be following others) and seeders (users that start out the follow spread).
  • After adding the users, add them to the target and seed user list.
  • New/least updated users are parsed first up to the max users setting value followed by a random range wait scan time.
  • A task is ran in the background for parsed users to make sure they're being followed by target users.
  • Another task is ran in the background to retrieve target user's followers and if the Remove Following setting is on, it will automatically unfollow these specific users for the target users.
  • Another task is ran that checks all users a target user is following and unfollows the user after x days (0 = doesn't unfollow).
  • Each follow and unfollow is followed by a random range wait time which may be configured.

To Do

  • Develop a more randomized timing system including most likely active hours of the day.
  • See if I can use something better in Django to alter general settings instead of relying on a table in the SQLite database. There are also issues with synchronization due to limitations with Django at this moment.

Requirements

The following Python models are required and I'd recommend Python version 3.8 or above since that's what I've tested with.

django
aiohttp

You can install them like the below.

# Python < 3
python -m pip install django
python -m pip install aiohttp

pip install django
pip install aiohttp

# Python >= 3
python3 -m pip install django
python3 -m pip install aiohttp

pip3 install django
pip3 install aiohttp

My Motives

A few months ago, I discovered a few GitHub users following over 100K users who were obviously using bots. At first I was shocked because I thought GitHub was against massive following users, but after reading more into it, it appears they don't mind. This had me thinking what if I started following random users as well. Some of these users had a single GitHub.io project that received a lot of attention and I'd assume it's from all the users they were following. I decided to try this. I wanted to see if it'd help me connect with other developers and it certainly did/has! Personally, I haven't used a bot to achieve this, I was actually going through lists of followers from other accounts and following random users. As you'd expect, this completely cluttered my home page, but it also allowed me to discover new projects which was neat in my opinion.

While this is technically 'spam', the good thing I've noticed is it certainly doesn't impact the user I'm following much other than adding a single line in their home page stating I'm following them (or them receiving an email stating this if they have that on). Though, I could see this becoming annoying if many people/bots started doing it (perhaps GitHub could add a user setting that has a maximum following count of a user who can follow them or receive notifications when the user follows).

I actually think it's neat this is allowed so far because it allows others to discover your projects. Since I have quite a few networking projects on this account, I've had some people reach out who I followed stating they found my projects neat because they aren't into that field.

I also wouldn't support empty profiles made just for the purpose of mass following.

USE AT YOUR OWN RISK

Even though it appears GitHub doesn't mind users massive following others (which I again, support), this is still considered a spam tactic. Therefore, please use this tool at your own risk. I'm not even going to be using it myself because I do enjoy manually following users. I made this project to learn more about Python.

Settings

Inside of the web interface, a settings model should be visible. The following settings should be inserted.

  • enabled - Whether to enable the bot or not (should be "1" or "0").
  • max_scan_users - The maximum users to parse at once before waiting for scan time.
  • wait_time_follow_min - The minimum number of seconds to wait after following or unfollowing a user.
  • wait_time_follow_max - The maximum number of seconds to wait after following or unfollowing a user.
  • wait_time_list_min - The minimum number of seconds to wait after parsing a user's followers page.
  • wait_time_list_max - The maximum number of seconds to wait after parsing a user's followers page.
  • scan_time_min - The minimum number of seconds to wait after parsing a batch of users.
  • scan_time_max - The maximum number of seconds to wait after parsing a batch of users.
  • verbose - Verbose level for stdout (see levels below).
  1. + Notification when a target user follows another user.
  2. + Notification when a target user unfollows a user due to being on the follower list or purge.
  3. + Notification when users are automatically created from follow spread.
  • user_agent - The User Agent used to connect to the GitHub API.
  • seed - Whether to seed (add any existing user's followers to the user list).
  • seed_min_free - If above 0 and seeding is enabled, seeding will only occur when the amount of new users (users who haven't been followed by any target users) is below this value.
  • max_api_fails - The max amount of GitHub API fails before stopping the bot for a period of time based off of below (0 = disable).
  • lockout_wait_min - When the amount of fails exceeds max API fails, it will wait this time minimum in minutes until starting up again.
  • lockout_wait_max - When the amount of fails exceeds max API fails, it will wait this time maximum in minutes until starting up again.
  • seed_max_pages - The max amount of pages to seed from with each user parse when looking for new users (seeding).

Installation

Installation should be performed like a regular Django application. This application uses SQLite as the database. You can read more about Django here. I would recommend the following commands.

# Make sure Django and aiohttp are installed for this user.

# Clone repository.
git clone https://github.com/gamemann/GitHub-Follower-Bot.git

# Change directory to Django application.
cd GitHub-Follower-Bot/src/github_follower

# Migrate database.
python3 manage.py migrate

# Run the development server on any IP (0.0.0.0) as port 8000.
# NOTE - If you don't want to expose the application publicly, bind it to a LAN IP instead (e.g. 10.50.0.4:8000 instead 0f 0.0.0.0:8000).
python3 manage.py runserver 0.0.0.0:8000

# Create super user for admin web interface.
python3 manage.py createsuperuser

The web interface should be located at http://<host/ip>:<port>. For example.

http://localhost:8000

While you could technically run the Django application's development server for this bot since only the settings are configured through there, Django recommends reading this for production use.

FAQ

Why did you choose Django to use as an interface?

While settings could have been configured on the host itself, I wanted an interface that was easily accessible from anywhere. The best thing for this would be a website in my opinion. Most of my experience is with Django which is why I chose that project.

Credits

More Repositories

1

XDP-Firewall

A firewall that utilizes the Linux kernel's XDP hook. The XDP hook allows for very fast network processing on Linux systems. This is great for dropping malicious traffic from a (D)DoS attack. IPv6 is supported with this firewall! I hope this helps network engineers/programmers interested in utilizing XDP!
C
511
star
2

XDP-Forwarding

Layer 3/4 packet forwarding software that utilizes the Linux kernel's XDP hook. The XDP hook allows for very fast network processing on Linux systems. Uses source port mapping similar to IPTables and NFTables.
C
154
star
3

gamemann

My GitHub profile ReadMe.
62
star
4

The-DPDK-Examples

Program examples utilizing the DPDK. The DPDK is a kernel-bypass network library that allows for very fast network packet processing. This is great for (D)DoS mitigation and low-latency packet inspection, manipulation, and forwarding.
C
41
star
5

Packet-Sequence

A pen-test/DoS tool that can be used to send single or multiple packets in sequences with a lot of packet customization.
C
36
star
6

BestBuy-Parser

A personal tool using Python's Scrapy framework to scrape Best Buy's product pages for RTX 3080 TIs and notify if available/not sold out.
Python
34
star
7

Pterodactyl-Game-Server-Watch

A tool programmed in Go to automatically restart 'hung' game servers/containers via a Pterodactyl API.
Go
32
star
8

The-DPDK-Common

A repository that includes common helper functions for writing applications in the DPDK. I will be using this for my future projects in the DPDK.
C
31
star
9

Kilimanjaro

A neat packet processing/forwarding program I made for a gaming community I used to be a part of. Includes many features.
C
29
star
10

Discord-Chooseable-Roles

A small open-source Discord Bot that allows you to react to setup messages and obtain roles on reaction. This is being used in a Discord server of mine.
Python
28
star
11

My-Raspberry-Pi-Manager

A simple manager interface I'm using for my Raspberry Pis written in Python. Allows me to start and stop processes such as Steam Link.
Python
28
star
12

TC-IPIP-Mapper

TC programs aimed to add support for multiple remote hosts in IPIP tunnels.
C
27
star
13

Packet-Flooder

A packet flooding/generating program I made that supports TCP, UDP, and ICMP packets. Includes functionality to change characteristics per packet and is also multithreaded.
C
27
star
14

Useful-Linux-Commands

Just a repository I'm using to store useful Linux commands to me and possibly others.
26
star
15

Discord-Global-Chat

Discord bot that syncs global chats.
Python
25
star
16

Rust-Auto-Wipe

A Go application for Rust game servers operating with Pterodactyl that automatically wipes server(s) based off of cron jobs.
Go
24
star
17

Misc

Smaller projects I've made starting from over 10 years ago. Projects in this repository are NOT supported.
JavaScript
24
star
18

Spawn-Protection

A simple SourceMod Spawn Protection plugin that was developed for Counter-Strike: Source and Counter-Strike: Global Offensive.
SourcePawn
24
star
19

The-DPDK-Stats

A simple DPDK application that calculates stats for dropped and forwarded packets depending on the command line.
C
23
star
20

music-list

Music and song list for what I listen to while programming, gaming, or whatever :D
22
star
21

IP-ASN-List

A Go application that outputs prefixes to a text file and supports ASN lookups.
Go
22
star
22

Create-T3-Test

Test application for Create T3! Will be testing things here for @bestmods!
TypeScript
20
star
23

XDP-Dynamic-Payload-Matching

Repository to store findings on matching dynamic payload data in XDP.
C
20
star
24

Home-Lab

Information on my home lab setup.
20
star
25

C-To-Assembly-Tests

A repository that stores results from converting C code to Assembly. I use this repository to analyze performance with my C code.
Assembly
19
star
26

Extra-Spawn-Points

Adds extra CT and T spawn points in Counter-Strike: Source and Counter-Strike: Global Offensive.
SourcePawn
19
star
27

Auto-Cmd-On-Update

SourceMod plugin that executes a console command on SRCDS servers when a game update is detected. Enables automatic game server updating with warning support.
SourcePawn
18
star
28

My-React-Playground

My React playground where I experiment with components and such. TypeScript used.
TypeScript
17
star
29

DPDK-Deploy-Action

A GitHub action to install the DPDK from source inside a GitHub workflow.
17
star
30

UDP-Spoof

A program imported from GFL's GitLab. It simply sends a UDP spoofed packet to a destination.
C
17
star
31

XDP-TCP-Header-Options

Repository for attempting to parse TCP header options in XDP.
C
16
star
32

CSGO_DecoyDodgeball

A fun dodgeball mod and plugin I made in 2015 for Counter-Strike: Global Offensive!
SourcePawn
16
star
33

IPIPDirect-TC

Sends outgoing IPIP packets back to the client directly instead of back through the IPIP tunnel/forwarding server. Uses TC egress filter for fast packet processing.
C
16
star
34

XDP-Stats

XDP programs that increment stat counters for packets/bytes.
C
16
star
35

GLib-Tests

A repository I'm using to learn hashing with GLib.
C
16
star
36

Stat

A small project to gather counter statistics from the file system or output from commands. Useful for retrieving packets per second and bytes per second on a network interface.
C
15
star
37

Browser.TF

A web-sided server browser for the game Team Fortress 2. Made in 2015.
JavaScript
14
star
38

Steam-Link-Setup-And-Issues-On-Raspberry-Pi

Documenting my adventure to setting up Steam Link on my Raspberry Pi 4 Model B devices to stream low-latency gameplay at 120Hz/FPS on my BenQ projector.
Shell
14
star
39

Laravel-Testing

Testing repository for Laravel, Tailwind CSS, ReactJS, SCSS, and more!
PHP
14
star
40

AI-And-Machine-Learning

A repository where I will release source code while learning AI and machine learning, something I'm very interested in.
13
star
41

joinserver

Joinserver.org - Find your favorite community or game server to join! Retrieves data from @modcommunity!
PHP
13
star
42

Old-Website-1

An old website I made in 2014 while I was in High School! My first advanced project for PHP/MySQL.
PHP
13
star
43

Godot-Testing

A repository that stores my Godot test projects while I'm learning it.
GDScript
13
star
44

Selenium-And-BeautifulSoup-Lab

A full lab and guide on how to use Selenium paired with Beautiful Soup to parse and extract data from a website using Python.
Python
13
star
45

postgresql-docker-image-with-backups

A custom Docker image based off of PostgreSQL's Docker image that implements Cron jobs and a backup Bash script that uploads a database dump to Backblaze B2.
Shell
13
star
46

gmods

gMods.io & gMods.org - Find your favorite game mod or mod community! Retrieves data from @modcommunity!
PHP
12
star
47

TC-Ingress-IPIP-Blocker

A simple TC Ingress program that blocks incoming packets based off of the inner IP header's source IP.
C
12
star
48

Fitbit-Heartrate-Monitor

An application that interacts with a Fitbit API and has options to send external notifications depending on what a person's heart rate is.
Python
12
star
49

Notes-and-Guides

Notes and guides I've made mostly exported from GFLClan.com.
12
star
50

bestservers-old

Find your favorite game servers and great deals from hosting providers! Project ran by the @modcommunity!
12
star
51

FPS-Threshold

Creates a forward for when the average server FPS goes under a threshold.
SourcePawn
11
star
52

Dynamic-Slots

A simple Dynamic Slots plugin for SourceMod.
SourcePawn
11
star
53

Bootstrap-Testing-Website

A Bootstrap testing website.
HTML
11
star
54

Hard-Link-Files

A small C++ application I made in 2016. Imported to GitHub from GFL's Gitlab server.
C++
11
star
55

Linux-BTRFS-Lab

A small lab using Ubuntu 23.04 with the BTRFS file system to test deduplication feature.
11
star
56

Map-Restart

A simple plugin for SourceMod that restarts the map or server after the time limit is up and no clients.
SourcePawn
11
star
57

csharp-websockets-chat

A small project that allows a client and server to communicate together similar to a chat room. I made this project to learn more about web sockets in CSharp/.NET and manage multiple web sockets at once.
C#
11
star
58

-GMod-Purge-Timer

The timer needed for Garry's Mod Purge servers.
Lua
11
star
59

CSGO_ZeusToggle

Toggle whether or not a client should spawn with a Zeus in CS:GO.
SourcePawn
10
star
60

Simple-Discord-Bot

A simple Discord bot imported from GFL's Gitlab. This was made using Java.
Java
10
star
61

Performance-Test-Program

A small program that acts as a C profiler.
C
10
star
62

Go-Spawn-And-Output-Logs-From-Process

This repository shows how to spawn processes within a Go program and output their stdout and stderr pipes to a log file!
Go
10
star
63

UDP-Ping

A UDP Client/Server implementation for pinging. Using for benchmarking.
C
10
star
64

Anycast-Endpoint

Templates, Docker images, Docker Gen, and more for an endpoint Anycast setup.
Shell
10
star
65

Discord-OnConnect

A quick plugin I wrote in SourceMod to open MOTD window on player connect.
SourcePawn
9
star
66

spacegamedevs-website

My website
HTML
9
star
67

AF_XDP-Test

AF_XDP test with XDP DRV/native mode. Testing issues with virtio_net driver (e.g. "Device or resource busy" errors).
C
9
star
68

Linux-Back-End-Scripts

A small project I worked on years ago and imported from GFL's GitLab server.
Shell
9
star
69

Compressor-V2-FOU-Wrap-Unwrapper

TC programs made for wrapping and unwrapping marked FOU-encapped packets. Being used for Compressor V2
C
9
star
70

CS-Unlimited-Ammo

CS Unlimited Ammo imported from GFL's Gitlab server.
SourcePawn
9
star
71

Pterodactyl-Packet-Watch

A project based off of my Pterodactyl Game Server Watch project.
Go
9
star
72

Test-Kernel-Modules

A repository used to store my test Linux kernel modules I make while I'm learning.
C
9
star
73

Rust-Plugins

A small project I made for the game Rust that contains plugins I've made for Oxide. Imported from GFL's GitLab server.
Lua
9
star
74

-GMod-Server-Hop

A server hop addon for Garry's Mod
PHP
9
star
75

CS_SpawnPoints

Adds extra spawn points in Counter-Strike games (e.g. CS:GO and CS:S).
SourcePawn
9
star
76

Xdp-Access-Last-Byte

Repository to store information accessing the last byte of a packet in BPF and XDP.
C
9
star
77

GFLPublic-SourceMod

GFL's public SourceMod plugins.
SourcePawn
9
star
78

GMod-Server-Browser

Project imported from GFL's Gitlab server. Allows all servers queried in the GMod server browser to be displayed on a web page.
JavaScript
9
star
79

Dot-DM

An open source first person shooter video game with Godot and a work in progress. Will be show-casing tools that @nextgen-modding creates in the future.
9
star
80

Game-Server-Versions

A small project I made a while ago and importing from GFL's GitLab server.
PHP
8
star
81

Killtrocity

A Python program used for communication between Kilimanjaro and Killfrenzy.
Python
8
star
82

CS_MapSpawnsChecker

Checks for the amount of player spawns a map has. If it is below a limit, further actions can be done.
SourcePawn
8
star
83

GMod---Roy-s-Spawn-Protection

GMod spawn protection addon imported from GFL's GitLab server.
Lua
8
star
84

Full-Alltalk-Patch

A CS:GO plugin I made years ago that I'm importing from GFL's GitLab server.
SourcePawn
8
star
85

Simple-GoLang-Application-With-CircleCI

Testing a simple GoLang web application with CircleCI support for building.
Go
8
star
86

IPIP-Forward

Simple IPIP Forwarding program made with AF_PACKET sockets.
C
8
star
87

CS-TimeLimit

CS Time Limit Enforcer imported from GFL's Gitlab server.
SourcePawn
8
star
88

createit

A high-level tool that allows you to create maps, 3D models, textures, and more with simplicity.
8
star
89

Killfrenzy

A Django web application used to sync edge servers running Kilimanjaro and consume/display stats.
Python
8
star
90

Go-Web-Attack-Log-Simulation

A basic Go program imported from GFL's Gitlab. This simply simulates a web attack via logs.
Go
8
star
91

All_PropHealth

Set prop's health. Advanced configuration and more to come!
SourcePawn
8
star
92

Simple-Java-MySQL-Wrapper

A simple Java MySQL wrapper imported from GFL's Gitlab.
Java
8
star
93

Simple-GMod-Discord-Relay

A simple GMod lua addon imported from GFL's Gitlab.
Lua
8
star
94

Continuous-A2S_INFO-Requests

A small C program imported from GFL's GitLab. This continuously sends A2S_INFO requests using cooked Linux sockets.
C
8
star
95

Website-1

A website I made while learning jQuery animation. Uses BootStrap, jQuery, HTML, CSS, and PHP.
JavaScript
8
star
96

GModPropSpamProtection

Deletes penetrating props when the servers lags. Therefore, should prevent prop spammers.
Lua
8
star
97

Lua-User-Management

A small project imported from GFL's GitLab server.
Lua
8
star
98

FPS-Threshold-Noblock

FPS Threshold plugin that forces noblock on all players after average FPS goes under threshold.
SourcePawn
8
star
99

cf-nginx-iptables-automation

A small, but neat Bash script that retrieves the latest IPv4 and IPv6 ranges from CloudFlare and then updates NGINX real IP headers and an IPTables chain.
Shell
8
star
100

GFL-MOTD-Plugin

An old project from GFL's GitLab server that served as GFL's MOTD plugin (for MOTD Ads).
SourcePawn
7
star