我对使用C ++模拟Web浏览器的功能感兴趣,这样我就可以为多个网站创建一个包装器。目前,这些网站最大的问题是他们大量使用与HTML DOM交互的JavaScript。因此,使用curl下载页面的简单解决方案以及RapidXML之类的解析其内容的方法已经完成。
接下来,我考虑使用curl这样的v8之类的东西,这解决了在页面上很好地解释JavaScript的问题。但是,它没有解决将HTML DOM方法与JavaScript连接的问题;换句话说,document.getElementById()
将在v8中失败。
接下来,我考虑了WebKit,它似乎非常适合模拟网络浏览器 - 毕竟,Chromium和Safari都在其网络浏览器中使用它。但是,它有点太完整了。我不需要它包含的所有渲染方面。
所以,我正在寻找一些方法:
<input>
字段的值
formSubmit()
<input type="button" onClick="formSubmit()">
功能,模拟点击“提交”按钮
window.location
完成)除了我已经考虑过的,我还有其他选择吗?理想情况下,我希望它非常轻量级,而不需要链接到许多库。
我主要关注的是为Windows 7 64位开发。
答案 0 :(得分:-1)
嗯,这听起来太像蛮力计划了。忽略这一点,并且由于您似乎不需要呈现任何网站,我认为您应该通过cURL或其他东西获取文件,然后解析它,通过使用正则表达式检查表单,检索表单操作,然后制作请求使用从<form>
标记中获取的方法以及您想要的任何输入。
问题是,没有正确的方法可以知道您何时正确登录,除非您进行了某种站点检查。这主要是因为许多站点使用会话而不是直接cookie或HTTP身份验证,并且由于您无法直接从会话中读取,因此您无法猜测会话何时发生更改。
这是我现在能想到的最轻量级的解决方案。