ruby-on-rails - 无法使用 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凭据时,有什么方法可以解决此问题或绕过安全检查?
解决方案
推荐阅读
- python-2.7 - 在 mac (Python 2.7.14) 上导入 pyttsx 语音引擎
- javascript - 达到 select2 选择的数据属性
- python - 如何使用 postgresql 作为 python 的键值存储?
- python - 将列表转换为表格 - python
- html - 尝试在 drupal 8 模块中包含资产(js、img、css)
- r - 在 R 中列出 sqlite 的数据库表
- java - FreeMarker 和 HTML
- data-structures - 具有混合类型的 Fortran 数据结构的最佳实践
- firebase - 处理谷歌身份验证和用户
- python - 第 5 行的 Django 无效块标记:'endfor'