docs: def _proxy_extension(self, proxy_parts):
          """
          Creates a chrome extension for the proxy
          Only need to be done this way when using a proxy with auth
          """
          import zipfile
          manifest_json = """
                          {
                              "version": "1.0.0",
                              "manifest_version": 2,
                              "name": "Chrome Proxy",
                              "permissions": [
                                  "proxy",
                                  "tabs",
                                  "unlimitedStorage",
                                  "storage",
                                  "<all_urls>",
                                  "webRequest",
                                  "webRequestBlocking"
                              ],
                              "background": {
                                  "scripts": ["background.js"]
                              },
                              "minimum_chrome_version":"22.0.0"
                          }
                          """
  
          background_js = """
                          var config = {{
                                  mode: "fixed_servers",
                                  rules: {{
                                    singleProxy: {{
                                      scheme: "{schema}",
                                      host: "{host}",
                                      port: parseInt({port})
                                    }},
                                    bypassList: []
                                  }}
                                }};
  
                          chrome.proxy.settings.set({{value: config, scope: "regular"}}, function() {{}});
  
                          function callbackFn(details) {{
                              return {{
                                  authCredentials: {{
                                      username: "{user}",
                                      password: "{password}"
                                  }}
                              }};
                          }}
  
                          chrome.webRequest.onAuthRequired.addListener(
                                      callbackFn,
                                      {{urls: ["<all_urls>"]}},
                                      ['blocking']
                          );
                          """.format(**proxy_parts)
  
          plugin_file = 'proxy_auth_plugin.zip'
          with zipfile.ZipFile(plugin_file, 'w') as zp:
              zp.writestr("manifest.json", manifest_json)
              zp.writestr("background.js", background_js)
  
          return plugin_file