Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 39 additions & 23 deletions .github/workflows/vpn_download.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
name: vpn_download.yml

on:
workflow_dispatch:
schedule:
- cron: '0 */24 * * *'

permissions:
contents: write
Expand All @@ -13,33 +12,50 @@ jobs:

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v4

- name: Install Chrome
run: |
sudo apt-get update
sudo apt-get install -y google-chrome-stable chromium-chromedriver

- uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.10'

- name: Install Dependencies
run: pip install selenium requests
run: pip install selenium webdriver-manager

- name: Run Downloader Script
env:
VPN_USERNAME: ${{ secrets.VPN_USERNAME }}
VPN_PASSWORD: ${{ secrets.VPN_PASSWORD }}
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
run: python proton_downloader_chrome.py

- name: Commit and Push Changes
run: |
git config --global user.name "GitHub Action Bot"
git config --global user.email "action@github.com"

if [ -f "ProtonVPN_WireGuard_Configs.zip" ]; then
git add ProtonVPN_WireGuard_Configs.zip downloaded_wg_ids.json

git commit -m "🔄 Update WireGuard Configs [$(date)]" || echo "No changes to commit"

git push
else
echo "No ZIP file found to upload."
fi
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time, os, requests

options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=options)

driver.get('https://account.protonvpn.com/login')
time.sleep(3)
driver.find_element(By.ID, 'username').send_keys(os.environ['VPN_USERNAME'])
driver.find_element(By.ID, 'password').send_keys(os.environ['VPN_PASSWORD'])
driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]').click()
time.sleep(5)
driver.get('https://account.protonvpn.com/downloads#wireguard-configuration')
time.sleep(3)
url = driver.find_element(By.CSS_SELECTOR, 'a[href*="wireguard"]').get_attribute('href')
r = requests.get(url)
open('ProtonVPN_WireGuard_Configs.zip', 'wb').write(r.content)
driver.quit()

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ProtonVPN_WireGuard_Configs
path: ProtonVPN_WireGuard_Configs.zip