自动从网页复制文本

时间:2014-03-24 00:36:59

标签: html vpn

有一个不断更改密码的VPN。我有一个自动登录,但显然每次更改密码时vpn连接都会丢失,我必须手动将新密码复制并粘贴到凭证文件中。

http://www.vpnbook.com/freevpn

这很烦人。我意识到vpn可能希望人们不能这样做,但它并不反对ToS而不是非法的,所以在这里与我合作!

我需要一种方法来自动生成一个除了之外没有任何内容的文件 用户名 密码

在不同的行上,就像上面那样。因此,自动将整个页面作为文本文件下载(我可以这样做)将不起作用。除非纯粹而简单,否则OpenVPN将无法理解凭证文件 用户名 密码

,仅此而已。

那么,有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这种事情最好通过vpnbook提供的API来完成。然后,脚本可以更轻松地访问信息并将其存储在文本文件中。

除此之外,看起来vpnbook没有API,你将不得不使用一种名为Web Scraping的技术。

要通过“Web Scraping”自动执行此操作,您需要编写执行以下操作的脚本:

  1. 首先,使用您的凭据登录vpnbook.com
  2. 然后导航到具有凭据的页面
  3. 然后遍历页面结构(称为DOM)以查找您想要的信息
  4. 最后,将此信息保存到文本文件中。
  5. 我通常使用Rubymechanize库进行网页抓取。 “机械化示例”页面中的第一个示例显示了如何访问Google主页,搜索“Hello World”,然后在结果中抓取结果中的链接。这与您尝试执行的操作类似,只是不打印它而是要将其写入文本文件。 (谷歌用Ruby编写文本文件)“:

    require 'rubygems'
    require 'mechanize'
    
    a = Mechanize.new { |agent|
      agent.user_agent_alias = 'Mac Safari'
    }
    
    a.get('http://google.com/') do |page|
      search_result = page.form_with(:id => 'gbqf') do |search|
        search.q = 'Hello world'
      end.submit
    
      search_result.links.each do |link|
        puts link.text
      end
    end
    

    要在您的计算机上运行此功能,您需要:

    一个。安装红宝石 湾将其保存在名为scrape.rb的文件中 C。使用命令行“ruby scrape.rb”

    调用它

    OSX附带了一款适用于此的旧版ruby。查看ruby站点,了解如何安装它或使其适用于您的操作系统。

    在使用像机械化这样的宝石之前,你需要安装它:

    gem install mechanize
    

    (这取决于正在安装的Rubygems,我认为它通常带有Ruby)。

    如果你是编程新手,这可能听起来像一个大项目,但你将在你的工具箱中拥有一个神奇的工具,你将会觉得你几乎可以“做任何事”你需要,而不是依赖其他开发人员碰巧已经构建了您需要的软件。

    注意:对于依赖javascript的网站,机械化不会工作 - 你可以使用Capybara + PhantomJS来运行一个可以从Ruby运行javascript的实际浏览器。

    注2:您可能实际上不必通过以下动议:(a)进入登录页面(2)“填写您的信息”,(3)点击“登录”等。根据其身份验证的工作方式,您可以直接转到显示所需信息的页面,并使用基本身份验证或其他方式直接将凭据提供给该页面。你必须看看他们的auth系统是如何工作的,并为此做一些试验和错误。最直接,最有可能工作的方法就是真实用户会做什么...登录登录页面。

    更新

    写完这一切之后,我遇到了vpnbook-utils库(在搜索“vpnbook api”期间),我认为这样做了你需要的东西:

      

    ...使用这个小工具,您可以为免费的VPN提供商vpnbook.com生成OpenVPN配置文件...   ...它还从vpnbook.com网站中提取不断变化的凭证......

    看起来像一个命令行:

    vpnbook config
    

    您可以自动获取凭据并将其写入配置文件。

    祝你好运!我仍然建议你学习ruby:)

答案 1 :(得分:0)

您甚至不需要解析内容。只需对第二次出现的Username:进行字符串搜索,在此之前剪切所有内容,使用sed查找下两次出现<strong></strong>之间的内容。您可以使用curlwget -qO-来获取网站的内容。