#!/usr/bin/python3 import requests import re def replace_agent_string(lines, replace_marker, url, regex): VALID_CHARS = 'a-zA-Z0-9\\(\\);:\\.,/_ ' regex = regex.replace('{VALID_CHARS}', VALID_CHARS) print(f'Updating {replace_marker}') for x in range(0, len(lines)): if replace_marker in lines[x]: break else: raise RuntimeError(f"Couldn't find marker {replace_marker}") response = requests.get(url) if response.status_code != 200: raise RuntimeError(f"Can't retrieve {url}") match = re.search(regex, response.text) if match is None: raise RuntimeError(f"Couldn't match regex {regex}") new_string = match.groups()[0] print(f'New value is: {new_string}') old_line = lines[x] if f"'{new_string}'" in old_line: print('(This is unchanged from the previous value)') else: new_line = re.sub("'(.*)'", f"'{new_string}'", old_line) if old_line == new_line: raise RuntimeError(f"Line didn't change: {old_line}") lines[x] = new_line chrome_url = "https://www.whatismybrowser.com/guides/the-latest-user-agent/chrome" edge_url = "https://www.whatismybrowser.com/guides/the-latest-user-agent/edge" safari_url = "https://www.whatismybrowser.com/guides/the-latest-user-agent/safari" firefox_url = "https://www.whatismybrowser.com/guides/the-latest-user-agent/firefox" user_agent_filename = 'lib/rex/user_agent.rb' with open(user_agent_filename,'r') as f: lines = f.read().splitlines() replace_agent_string(lines, 'Chrome Windows', chrome_url, '