The Browser Proxy Opener
What is a Proxy?
A proxy server acts as an intermediary between the websites you visit. This intermediary allows you to perform various actions with a higher level of privacy. While people can get away with using a single proxy, most must switch through multiple to achieve their objectives. In certain situations which require precision, switching proxies manually can be cumbersome.
The problem this application solves 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 to resell a ton of shoes. He surmised that he could gain an edge over other resellers by using a manual proxy switcher that allowed him to open a link multiple times at the click of a button but with different proxies or profiles each. 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 use applications that implement proxies to pad or generate favorable numbers in product growth reports. Sometimes, click farms (originating from a relative IP) may utilize manual proxy switching to generate realistic marketing profiles. This project was not created 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 — a business student —approached me with the idea in August 2019. He described the program's requirements and said he would pay me IF he could score shoes with it. Adding input verification for proxies and profiles was simple, but opening proxies within the same browser was complicated. I would have to use Selenium, a library that automates browsers, to do this. 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 then, leading me on a journey that made me question everything I knew to be true... A month later, BPO ALPHA was complete.
In September, my roommate and I tested the program to update requirements before the upcoming shoe drop in a few weeks. After this, my roommate began to mention the excitement that his friends’ (in cook groups) had for the program: This conflicted with me because I said that I’d allow him to use the program on the basis that I was paid later. This conflict sparked a back-and-forth “conversation” between his friends and me — with my 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 fixed promptly. By this time, I had established that my roommate’s friends could use the program for $9 since I couldn’t trust people I had no contact with to give me money on the condition that they made money. However, that establishment was not made clear to them since the “conversation” my roommate’s friends and I were having didn’t actually occur: He never told them I was charging for their use of the program 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 and gave me confidence regarding my software skills: A non-technical client provided me with requirements, which I delivered. As a result, I realized that the work I do is valuable. Unfortunately, the realization — that my work is valuable — was not apparent to those around me, resulting in a lack of compensation.
This project changed my view of my roommate, to what extent I’m unsure. When he realized 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 outsourcing 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 to other shoe resellers.