首页 > 解决方案 > 无法使用 Ruby Gems(Ruby on Rails 应用程序)在生产中抓取链接的配置文件

问题描述

我正在使用以下 ruby​​ 代码使用以下 ruby​​ gems 来抓取 LinkedIn 的公共个人资料

1)使用“机械化”宝石


    require 'rubygems'
    require 'mechanize'
    require 'nokogiri'
    require 'open-uri'
    agent = Mechanize.new { |agent| agent.user_agent_alias = 'Mac Safari 4'}
    agent.follow_meta_refresh = true
    page = agent.get("https://www.linkedin.com/login")
    login_form = page.form(:class => 'login__form')
    login_form.session_key = "my_email_id"
    login_form.session_password = "my_password"
    page = agent.submit(login_form, login_form.buttons.first)

2)使用“watir”宝石


    require 'nokogiri'
    require 'open-uri'
    require 'webdrivers'
    require 'watir'
    browser = Watir::Browser.new :chrome, headless: true
    browser.goto 'https://www.linkedin.com/login'
    browser.input(name: 'session_key').send_keys('my_email_id', :return)
    browser.input(name: 'session_password').send_keys('my_password', :return)
    browser.html

当我尝试在本地机器(ubuntu)上使用它时,LinkedIn 不会发送安全代码,因为我之前已经使用本地 chrome 浏览器登录到该帐户。因此 LinkedIn 知道其已知的浏览器,它会发送正确的响应并能够抓取详细信息。

但是当我在生产环境(Linux ec2 实例)上尝试这些代码时,LinkedIn 将安全代码发送到我的电子邮件,因为它不知道浏览器(在 Linux ec2 上安装了 google chrome 和 chrome 驱动程序)没有登录到我的 LinkedIn 帐户并且没有给出正确的响应广告无法抓取它

当我使用正确的linkedin凭据时,有什么方法可以解决此问题或绕过安全检查?

标签: ruby-on-railsrubyweb-scrapingwatirmechanize-ruby

解决方案


推荐阅读