A proxy server acts as an intermediary between the websites you visit. This allows you to do a variety of functions with a higher level of privacy. While one can get away with using a single proxy, most need to switch through multiple to achieve the functionality they require. In certain situations where manual precision is required, switching proxies manually can be cumbersome.
The problem for this application stemmed from a request by a past roommate, Matt, who was a shoe reseller. During this time, he owned multiple bots that cost up to $4000 in value in order to resell a ton of shoes. He surmised that he could gain an edge on other resellers by using a manual proxy switcher that allowed him to — at the click of a button — open a link multiple times, but with different proxies (and/or profiles). The proxy switcher addon on Google wasn’t quick enough for his use-case.
Another well known use-case for proxies is a click farm. Many companies will utilize applications which use proxies in order to pad or generate favorable numbers they can use to report growth on their products. In certain cases, click farms (who originate from a relative IP) may utilize proxy switching manually in order to generate realistic profiles for marketing. This project was not created to be used for this purpose, but having multiple purposes that the project could apply to — potentially as a business — is what compelled me to create it.
The Goal of Browser Proxy Opener
Browser Proxy Opener is a tool with three main functions in order to provide a variety of use-cases:
Open multiple links at once upon input.
Use a built-in proxy switcher allowing separate proxies PER LINK.
Use a built-in proxy switcher allowing separate profiles PER LINK.
How is the Application Engineered?
The desktop application uses Java in order to implement its automated features through Selenium, and Python to assist with input verification in the file manager. JavaFX is used to provide the GUI with a light and dark mode (via CSS). Encrypted security keys were stored with a MySQL database to provide access. The application is also obfuscated to limit reverse engineering of the program.
My roommate (business student) approached me with the idea in August of 2019. He described the requirements of the program, and stated that he’d pay IF he was able to score shoes with it. Adding input verification for proxies and profiles was simple, but opening proxies within the same browser was very complicated. In order to do this, I would have to use Selenium, a library that automates browsers. I already had experience using Selenium when I created a program to do my interactive textbook homework (over a programming class). However, multi-proxy-profile per window functionality was not present in the documentation at the time, which led me on a journey that made me question everything I knew to be true... A month later, BPO ALPHA was completed.
In September, my roommate and I tested the program to iron out its bugs and update requirements prior to the shoe drop coming in a few weeks. After this, my roommate began to mention the excitement that his friends’ (in cook groups) had for the program: This made me conflicted because I said that I’d allow him to use the program (on the basis that I was paid later). This sparked a back and forth “conversation” between his friends and I — with the roommate acting as a proxy — to decide on what conditions I would provide them with the program. Due to my suspicions, I decided to add the security aspects (license keys, obfuscation) to the updated version of the program.
In October, we tested the program on an Amazon Web Server a day before the drop: The program had some issues which were promptly fixed. By this time, I had established that his friends could use the program for $9 as I couldn't trust people I had no contactwith to give me money on the condition that they made money. However, that establishment was not made clear to them since the “conversation” his friends and I were having didn’t actually occur: He never told them I was charging for their use because he “wasn’t going to charge his friends [for my work]”. In his eyes, this was justified because he told me “not to create the program if I expected a guaranteed payment". We argued civilly about this event for a few weeks and the program ended up unused.
The project was great for gaining experience. It also gave me confidence in regards to my software skills: An objective was provided and I delivered upon it. As a result, I was able to realize that the work I do is valuable. Unfortunately, that realization — that my work is valuable — was not apparent to those around me resulting in a lack of compensation.
This project changed the view I had of my roommate, to what extent, I'm unsure. When he realized that he could not bypass the implemented security measures for his friends, he told me that he'd "just get the same program created by outsourcing" the task to (paid) developers in a third-world country; which his friends were willing to pay thousands for. This didn't occur because the program was hard to make. Instead, he and his friends paid those developers (thousands) to create proxies for a business that sold them.