├── .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 |
--------------------------------------------------------------------------------