javascript - 如何检测网页中大多数不常见的超链接和隐式重定向?

标签 javascript c++ html qt web-crawler

我在 C++/Qt4.8.5 for Windows 中创建网站爬虫。我发现有时页面可能包含隐式(伪)重定向,如 location.replace("some site");script标签。并且请求的结果代码是 200 而不是像 Permanently Removed 这样的东西.我不使用正则表达式来查找其他页面的链接,因为它不够健壮。我检查 HTML 节点的属性而不是它。原始爬虫只检测 href a 中的属性标签。但是还有其他节点可以包含 url。例如,<META HTTP-EQUIV="REFRESH" CONTENT="0; URL=/relative_url"> .与 url 容器、隐式重定向相关的非官方标签/属性列表(包括 script)在哪里?也许,C++/Java 中的某些库包含对这些情况的处理。

此外,我注意到向请求添加首选语言的 header 无法更改网站的页面语言。我的意思是 Chrome 有某种语言的页面,但我的抓取工具有另一种默认语言的页面,尽管它试图模仿 Chrome 用户代理和语言首选项。我注意到 Chrome 中的 cookie 包含该站点的语言属性。是否有任何其他属性可以帮助服务器以所需语言生成页面?

最佳答案

Are there any additional properties which can help server to generate page in the desired language?

还有更多的可能性,例如地理位置(通过 IP、地理定位 API 等识别)。

关于javascript - 如何检测网页中大多数不常见的超链接和隐式重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22740932/

相关文章:

javascript - Lint 和 Prettier 存储库没有大规模合并冲突

c++ - 如何使用 boost 序列化 CString

html - 一个或两个表格以 div 为中心

javascript - 使用 jquery 进行元素阻塞

javascript - 是否可以根据键的一部分过滤键值对?

c++ - 使用 system() 函数调用防止通配符扩展

html - 自定义复选框状态不会在 Bootstrap 崩溃时更新

css - 将 <div> 分成两部分

javascript - 为什么我无法使用 Ajax 访问该变量的属性?

c++ - 将具有默认值的构造函数定义为组合对象作为私有(private)字段