Python 如何在OperaDriver中启用内置VPN?

Python 如何在OperaDriver中启用内置VPN?,python,selenium,web-scraping,opera,Python,Selenium,Web Scraping,Opera,opera浏览器具有内置VPN,允许您在浏览时隐藏IP。 我的问题是,在python中使用带selenium的OperaDriver时是否可以打开VPN 详细的尝试和问题: 我有一个脚本,它去一个网站显示我的IP地址 from selenium import webdriver from selenium.webdriver.opera.options import Options from time import sleep driver = webdriver.Opera(executabl

opera浏览器具有内置VPN,允许您在浏览时隐藏IP。 我的问题是,在python中使用带selenium的OperaDriver时是否可以打开VPN

详细的尝试和问题:

我有一个脚本,它去一个网站显示我的IP地址

from selenium import webdriver
from selenium.webdriver.opera.options import Options
from time import sleep
driver = webdriver.Opera(executable_path=r'/path/to/operadriver')
driver.get('https://whatismyipaddress.com')
sleep(10)
driver.quit() 
当我在启用VPN的opera浏览器上访问此站点时,我的IP被屏蔽,并显示一些其他IP地址。但是我的脚本打开浏览器显示我的真实IP地址

我在SO上以及其他网站上搜索了OperaDriver上的几乎所有问题。似乎在任何地方都没有与此相关的文档或任何其他问题

最近的一次是。OP表示,他能够通过使用OperaOptions加载自定义配置文件使其正常工作。链接中发布的代码是

OperaOptions operaOptions = new OperaOptions();
operaOptions.addArguments("user-data-dir", "~/Library/Application Support/com.operasoftware.Opera");
driver = new OperaDriver(operaOptions);

我试着用python来做这件事,但没有任何结果。如果有任何问题,我使用Ubuntu 16.04,OperaDriver是从下载的。Python版本为
3.6.7
,Opera版本为
57.0.3098.116
,适用于
Ubuntu16.04 LTS(x86\u 64;Unity)

您尝试使用的是OperaOptions,而不是ChromeOptions,从

选项:这以ChromeOptions为例

正如卡卡奥所说

“从GUI启用VPN,并将设置保存在活动 个人资料。”

结果:

First try
IPv6: 2001:67c:2660:425:2:0:0:3f8
IPv4: 77.111.247.26

Second try
IPv6: 2001:67c:2660:425:1a:0:0:1a0
IPv4: 77.111.247.66

Third try
IPv4: 77.111.247.133
IPv6: Not detected

Forth try
IPv6: 2001:67c:2660:425:1c:0:0:1fe
IPv4: 77.111.247.68
没有一个是我的IP,VPN图标显示在地址栏旁边

更新了对问题的回答

了解Opera配置文件路径的简单方法就是键入 about://about 在地址栏中,检查下面的配置文件行 路径

在Windows10上,代码如下所示

from selenium import webdriver
from time import sleep

# The profile where I enabled the VPN previously using the GUI.
opera_profile = r'C:\\Users\\dan\\AppData\\Roaming\\Opera Software\\Opera Stable' 
options = webdriver.ChromeOptions()
options.add_argument('user-data-dir=' + opera_profile)
options._binary_location = r'C:\\Users\\dan\\AppData\\Local\\Programs\Opera\\58.0.3135.114\\opera.exe'
driver = webdriver.Opera(executable_path=r'C:\\operadriver_win64\\operadriver.exe',options=options)
driver.get('https://whatismyipaddress.com')
sleep(10)
driver.quit()

@Dan Dev给出了一个很好的答案,允许您在不进行任何手动干预的情况下启用VPN

我想和大家分享一个我正在尝试的替代方法。这需要手动干预才能启用VPN。如果接受的答案对你不起作用,只考虑这一点。

台阶

  • 转到opera隐私设置页面,网址为
    opera://settings/privacy
    首先
  • 给睡眠时间,以便手动干预
  • 向下滚动并单击启用VPN按钮

  • 继续执行其余的操作/逻辑
代码:

结果:

这不是我的IP地址。所以这也会起作用

注意

我确实尝试用selenium单击该按钮,但没有成功。使用
驱动程序查看页面源代码

<dom-module id="settings-startup-url-dialog" assetpath="on_startup_page/" css-build="shadow">
  <template>
    <style include="settings-shared" scope="settings-startup-url-dialog"></style>
    <cr-dialog id="dialog" close-text="Close">
      <div slot="title">[[dialogTitle_]]</div>
      <div slot="body">
        <cr-input id="url" label="Site URL" value="{{url_}}" on-input="validate_" spellcheck="false" maxlength="[[urlLimit_]]" invalid="[[hasError_(error_)]]" autofocus="" error-message="[[errorMessage_('Invalid URL',&#10;                'Please enter a shorter URL', error_)]]">
        </cr-input>
      </div>
      <div slot="button-container">
        <paper-button class="cancel-button" on-click="onCancelTap_" id="cancel">Cancel</paper-button>
        <paper-button id="actionButton" class="action-button" on-click="onActionButtonTap_">[[actionButtonText_]]</paper-button>
      </div>
    </cr-dialog>
  </template>
  </dom-module>

[[对话标题]]
取消
[[actionButtonText]

我无法自动执行单击部分,但在其他方面可以正常工作。如果我能做到这一点,我会更新这个答案。

虽然这并不是一种在代码中实现的方法,但它对我很有效,我希望它能帮助您。打开完整的浏览器设置,从左侧选择“高级”下拉列表,然后单击“功能”。启动浏览器时,您应该会看到一个按钮,上面写着
连接到VPN
。打开后,每次将selenium与Opera一起使用时,都会使用VPN进行浏览。

我认为此人所做的是从GUI启用VPN,并将设置保存在活动配置文件中。当以编程方式启动Opera时,它们始终应用该特定配置文件。与“卡卡奥”解释的想法类似,我似乎不这么认为。当启动OperaDriver时,我似乎总是从一个新的配置文件开始。对于c#用户,我认为这个链接有一个公认的答案。谢谢你的出色回答。我看到您已指向config文件夹。请允许我为Windows用户着想,您知道该文件夹在Windows中的位置吗?它是否类似于我在问题中提到的
~/Library/Application Support/com.operasoftware.Opera
from selenium import webdriver
from time import sleep
driver = webdriver.Opera(executable_path=r'path/to/operadriver')
driver.get('opera://settings/privacy')
sleep(30) #use this sleep to maually enable the VPN
#The rest of your logic goes below 
#I am just checking my address from a different url
driver.get('https://whatismyipaddress.com')
driver.quit() 
<dom-module id="settings-startup-url-dialog" assetpath="on_startup_page/" css-build="shadow">
  <template>
    <style include="settings-shared" scope="settings-startup-url-dialog"></style>
    <cr-dialog id="dialog" close-text="Close">
      <div slot="title">[[dialogTitle_]]</div>
      <div slot="body">
        <cr-input id="url" label="Site URL" value="{{url_}}" on-input="validate_" spellcheck="false" maxlength="[[urlLimit_]]" invalid="[[hasError_(error_)]]" autofocus="" error-message="[[errorMessage_('Invalid URL',&#10;                'Please enter a shorter URL', error_)]]">
        </cr-input>
      </div>
      <div slot="button-container">
        <paper-button class="cancel-button" on-click="onCancelTap_" id="cancel">Cancel</paper-button>
        <paper-button id="actionButton" class="action-button" on-click="onActionButtonTap_">[[actionButtonText_]]</paper-button>
      </div>
    </cr-dialog>
  </template>
  </dom-module>