通过C ++控制Web浏览器

时间:2016-05-21 06:07:24

标签: c++ google-chrome firefox google-chrome-extension firefox-addon

我想编写一个可以使用特定网站的程序。我希望它能够识别相当琐碎的事情(文本),点击链接,并提交表单。

我希望服务器日志看起来与实际用户的活动没什么不同,所以我不想像往常那样在浏览器之外操作。我希望像javascript这样的东西能够在页面上按预期运行,所以我不想伪造正在发送的用户代理。

我应该注意什么才能实现这一目标?它将在Windows中运行。如果我必须选择一个浏览器,它将是Chrome,Firefox是我的第二选择。如果它不是那么复杂,我希望能够让它与Chrome,Firefox,IE和Edge一起使用,但只需选择1也行。

我对C ++非常熟悉,并且更愿意将其用于此项目。 (是的,我知道其他语言对于熟悉它们的人来说可能会更快开发,但这是我想要坚持的。)

我需要它能够在浏览器之外与数据库进行交互。我可以使用能够进行进程间通信的浏览器插件来处理这个问题,或者拥有一个能够有效地抓取浏览器并创建用户外观输入的完全外部程序。

2 个答案:

答案 0 :(得分:1)

Selenium似乎很适合你。它通常用于自动测试webapps,但没有理由不能与任何网站进行交互。它可以用来驱动任何主流浏览器(不确定Edge;自从我使用Selenium以来已经有一段时间了)以完全自动化的方式。

Selenium没有C ++绑定,但它确实有Java,C#,Python,Ruby,PHP,Perl和Javascript绑定。

答案 1 :(得分:0)

由于您使用的是Windows,因此Microsoft提供了用于模拟鼠标点击,位置和键盘的API。

VOID WINAPI mouse_event(
_In_ DWORD     dwFlags,
_In_ DWORD     dx,
_In_ DWORD     dy,
_In_ DWORD     dwData,
_In_ ULONG_PTR dwExtraInfo
);

来自User32.dll和winuser.h的键盘

VOID WINAPI keybd_event(
  _In_ BYTE      bVk,
  _In_ BYTE      bScan,
  _In_ DWORD     dwFlags,
  _In_ ULONG_PTR dwExtraInfo
);

这些都已过时,但具有基本相同的替代品,但实施安全级别机制。