├── .gitignore ├── LICENSE ├── README.md ├── proxy.py ├── requirements.txt └── viewbot.py /.gitignore: -------------------------------------------------------------------------------- 1 | proxy-list.txt 2 | env/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 poseidon-code 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # YouTube Viewbot 2 | 3 | > ## ⚠ **DISCLAIMER** ⚠ 4 | > 5 | > YouTube Viewbot is just an experiment, and all the risk involved and harm done, on running this program, is solely on the user of this program.\ 6 | > The risks may include temporary takedown of the youtube video (by YouTube), temporarily suspending the view counts of the youtube video (by YouTube), and the views gained by this program may get resetted after some time (by YouTube).\ 7 | > This program will not take any userdata, but can take high amount of available resources (CPU & RAM) to reach maximum potential of parallelism. 8 | 9 | --- 10 | 11 | ## Prerequisites 12 | 13 | The computer, this program will be running on, must have `Python` installed and `PATH` must be set. 14 | 15 | 1. Download `Python` from [here](https://www.python.org/downloads/) 16 | 17 | 2. Install `Python` by checking all check boxes in the First page of Python Installation. _(**especially**, make sure `☑️ Add Python to system PATH` option is checked)_ 18 | 19 | 3. The computer must have **Google Chrome** web browser installed. 20 | 21 | 4. Download Chrome WebDriver from [here](https://chromedriver.chromium.org/downloads). _(this program requires you to download the Chrome WebDriver of **same version** as that of your Google Chrome Browser, and move-replace that to this program's directory)_ 22 | 23 | 5. Download this program from [here](https://github.com/poseidon-code/youtube-viewbot/archive/main.zip) 24 | 25 | --- 26 | 27 | ## Using YouTube Viewbot 28 | 29 | > **PREFACE**\ 30 | > This program is very resource heavy, sometimes you might feel like the computer has hanged/freezed/lagging, but nothing to fear as the program is taking as much resources it could get to complete the process.\ 31 | > By theory, the views generated by this program is proportional to the number of proxies in the `proxy-list.txt`, but there are many constraints such as - how many proxies are valid and working, will the views earned by this program be reflected in that YouTube video, maybe those views might get removed as soon as YouTube finds that it is done by a bot and many more.\ 32 | > Taking those things into consideration, this program could give a nice amount of boost to view counts, but not by exactly specified numbers. 33 | 34 | 1. Go to the downloaded folder _(the folder where you downloaded this program)_. `Copy` the **folder path**. 35 | 36 | 2. Open `cmd` _(in Windows, `terminal` in Linux/MacOS)_, enter the following command, then press Enter: 37 | 38 | ```bash 39 | cd paste/the/path/to/that/downloaded/folder 40 | ``` 41 | 42 | 3. Install required packages by entering the following command : 43 | 44 | ```bash 45 | pip install -r requirements.txt 46 | ``` 47 | 48 | 4. Generate `proxy-list.txt` file by entering the following command : 49 | 50 | ```bash 51 | python proxy.py 52 | ``` 53 | 54 | > Make sure you run this command every time whenever starting this program, as this would get latest proxies everytime. 55 | 56 | 5. The `proxy-list.txt` file contains IP addresses and their respective host ports in the following pattern : `:` per line. 57 | 58 | ```txt 59 | ./proxy-list.txt 60 | 61 | 134.87.56.146:3677 62 | 213.89.37.145:3523 63 | 145.123.77.143:987 64 | ``` 65 | 66 | > **PRO TIP :** If you have any other source of having proxies (like; PRO/PAID member of free-proxy-list.com or any other proxy provider), then you can get a premium proxy list from them, and make an empty `proxy-list.txt` file in that directory and paste all those premium proxies line-by-line and **skip step 4**. 67 | 68 | 6. Copy the YouTube video `URL` that you want to increase the views of, and execute this command : 69 | ```bash 70 | python viewbot.py 71 | ``` 72 | **example :** 73 | ```bash 74 | python viewbot.py https://youtu.be/oH3as_QyRsI 30 75 | ``` 76 | 77 | ### ☕ Now sit back, depending on how many proxies you have in the `proxy-list.txt` file, this program will take some time (more the proxies, more time will be taken, more views can be generated) 78 | 79 | --- 80 | 81 | ## Acknowledgement 82 | 83 | YouTube Viewbot is made by [poseidon-code](https://github.com/poseidon-code) using [Selenium](https://www.selenium.dev) Web Driver. Free proxies are provided by [FreeProxyList](https://www.free-proxy.cz). This program is an experimental project and one should go through the **[Disclaimer](#⚠-disclaimer-⚠)** at the start. 84 | -------------------------------------------------------------------------------- /proxy.py: -------------------------------------------------------------------------------- 1 | # proxy scraping for/from https://free-proxy.cz/ 2 | 3 | import concurrent.futures 4 | from os import system 5 | from platform import system as current_os 6 | 7 | from selenium.webdriver.chrome.options import Options as ChromeOptions 8 | from selenium.webdriver.chrome.service import Service as ChromeService 9 | from selenium.webdriver.chrome.webdriver import WebDriver as Chrome 10 | from selenium.webdriver.common.by import By 11 | 12 | 13 | def clear(): 14 | if current_os() == 'Windows': system('cls') 15 | else: system('clear') 16 | 17 | # www.free-proxy.cz proxy list URLs 18 | urls = [ 19 | 'http://free-proxy.cz/en/proxylist/country/all/https/ping/all', 20 | 'http://free-proxy.cz/en/proxylist/country/all/https/uptime/all', 21 | 'http://free-proxy.cz/en/proxylist/country/all/https/speed/all' 22 | ] 23 | 24 | # setting webdriver options 25 | options = ChromeOptions() 26 | options.add_argument('-headless') 27 | 28 | 29 | # getting all proxies 30 | proxies = [] 31 | def getProxy(url): 32 | service = ChromeService(executable_path='./chromedriver.exe') 33 | driver = Chrome(options=options, service=service) 34 | 35 | driver.get(url) 36 | driver.find_element(By.XPATH, '//*[@id="clickexport"]').click() 37 | proxylist = driver.find_element(By.XPATH, '//*[@id="zkzk"]') 38 | 39 | global proxies 40 | proxies.extend(proxylist.text.splitlines()) 41 | 42 | driver.quit() 43 | 44 | 45 | 46 | clear() 47 | print('[...]\tGetting Proxies from www.free-proxy.cz') 48 | # executing getProxy() parallelly 49 | with concurrent.futures.ThreadPoolExecutor() as executor: 50 | executor.map(getProxy, urls) 51 | clear() 52 | print('[DONE]\tGetting Proxies from www.free-proxy.cz') 53 | 54 | 55 | # removing duplicate proxies 56 | proxies = list(set(proxies)) 57 | print('[***]\tTotal Proxies Found :', len(proxies)) 58 | 59 | 60 | # writing proxies to file 61 | with open('proxy-list.txt', 'w+') as f: 62 | for i in range(len(proxies)): 63 | f.write(proxies[i]+'\n') 64 | print('[DONE]\tGenerated "proxy-list.txt"') 65 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | selenium==4.13.0 -------------------------------------------------------------------------------- /viewbot.py: -------------------------------------------------------------------------------- 1 | import concurrent.futures 2 | import sys 3 | import time 4 | 5 | from selenium.webdriver.chrome.options import Options as ChromeOptions 6 | from selenium.webdriver.chrome.service import Service as ChromeService 7 | from selenium.webdriver.chrome.webdriver import WebDriver as Chrome 8 | from selenium.webdriver.common.by import By 9 | 10 | 11 | # takes YouTube video URL & duration of watching (playing) the video (:in seconds) 12 | url, duration = str(sys.argv[1]), int(sys.argv[2]) 13 | 14 | # checks & reads the proxy-list.txt 15 | proxies=[] 16 | try: 17 | with open('proxy-list.txt', 'r') as f: 18 | proxies=f.readlines() 19 | except: 20 | print('[ERROR]\t"proxy-list.txt" file NOT FOUND !!') 21 | exit() 22 | print('[***]\tTotal Proxies :',len(proxies)) 23 | 24 | 25 | # starting YouTube video using different proxies 26 | def getViews(proxy): 27 | options = ChromeOptions() 28 | options.add_experimental_option("excludeSwitches", ["enable-automation"]) 29 | options.add_experimental_option("excludeSwitches", ["enable-logging"]) 30 | options.add_argument('--proxy-server=%s' %proxy) 31 | options.add_argument('--window-size=640,480') 32 | 33 | try: 34 | service = ChromeService(executable_path='./chromedriver.exe') 35 | driver = Chrome(options=options, service=service) 36 | driver.get(url) 37 | time.sleep(duration) 38 | except: 39 | pass 40 | 41 | driver.quit() 42 | 43 | # executing start() parallelly 44 | with concurrent.futures.ThreadPoolExecutor() as executor: 45 | executor.map(getViews, proxies) 46 | --------------------------------------------------------------------------------