当前位置: 首页 > 科技观察

如何使用Photon高效提取网站数据

时间:2023-03-19 00:37:39 科技观察

Photon是一个高效的网络爬虫,可以从目标中提取URL、文件和各种类型的情报。它通过多线程大大加快了数据提取过程。项目地址:https://github.com/s0md3v/Photon主要特性Photon提供的各种选项允许用户以自己的方式爬取网页,但这并不是Photon最好的特性。数据提取默认情况下,Photon在抓取时提取以下数据:URL(范围内和范围外)带参数的URL(example.com/gallery.php?id=2)情报(电子邮件、社交媒体帐户、亚马逊buckets等)文件(pdf、png、xml等)JavaScript等文件是基于自定义正则表达式模式的字符串提取保存的,如下图所示。智能多线程大多数浮现在互联网表面的工具都没有正确使用多线程,它们要么为线程提供一个项目列表,导致多个线程访问同一个项目,要么只是放置一个线程锁并最终渲染多线程没用。忍者模式在忍者模式中,3个在线服务器用于代表您向目标发出请求。所以基本上,现在您有4个客户端同时向同一服务器发出请求,如果连接速度较慢,您可以提高速度,从而最大限度地降低连接重置和单个客户端请求延迟的风险。这是Quark生成的对比图,其中线条代表线程:Compatibility&DependencyCompatibilityPhoton目前完全兼容python2.x–3.x,但由于该项目正在积极开发中,它可能需要python2。功能。因此,开发者最终可能会放弃对python2.x的支持。操作系统Photon已经在Linux(Arch、Debian、Ubuntu)、Termux、Windows(7&10)和Mac上进行了测试,并在所有系统上正常运行,如果您发现任何错误,请在github上提交。颜色Mac和Windows不支持ANSI转义序列,因此输出不会在Mac和Windows上显示颜色。其余依赖requestsurllib3argparsePhoton使用的python库都是预装的python解释器的标准库。Photon的使用方法语法:photon.py[options]-u--url目标url-l--level爬行级别-t--threads线程数-d--delay请求之间的延迟-c--cookiecookie-r--regex正则表达式模式-s--seeds其他子url-e--export导出格式化结果-o--output指定输出目录--exclude通过正则表达式排除特定url--timeouthttp请求超时---ninja忍者mode--updateupdate--dnsdumpdnsdata--only-urlsonlyextracturl--user-agent指定用户代理只抓取一个网站选项-u或-url,使用示例:pythonphoton.py-u"http://example.com"抓取深度选项-l或–level,默认深度为2,使用示例:pythonphoton.py-u"http://example.com"-l3通过该选项,用户可以设置爬取的递归限制,比如深度为2表示Photon会从主页面和子页面开始爬取。线程数选项-t或--threads,默认线程数为2,使用例子:pythonphoton.py-u"http://example.com"-t10这个选项可以对目标进行并发请求,-t选项可用于指定并发请求的数量。值得注意的是,多线程虽然可以加快爬取速度,但也可能触发安全机制。另外,过多的线程也可能导致小网站崩溃。每个HTTP请求之间的延迟选项-d或--delay,默认为0,使用示例:pythonphoton.py-u"http://example.com"-d2该选项可以指定每个HTTP(S)之间的间隔request以秒为单位的时间间隔。有效值为int,例如1表示1秒。Timeoutoption–timeout,默认为5,用法示例:pythonphoton.py-u"http://example.com--timeout=4该选项指定HTTP(S)请求在超时前等待的时间。Cookies选项-c或--cookies,默认不发送cookie头,用法示例:pythonphoton.py-u"http://example.com"-c"PHPSESSID=u5423d78fqbaju9a0qke25ca87"HTTP请求添加Cookie头,主要是当目标网站需要根据Cookie进行认证时使用,指定输出目录选项-o或–output,默认为目标域名,使用示例:pythonphoton.py-u"http://example.com"-o"mydirectory"Photon将结果保存在以目标域名命名的目录中,但你可以使用该选项自定义目录。排除特定url选项--exclude,用法示例:pythonphoton.py-u"http://example.com"--exclude="/blog/20[17|18]"符合指定正则表达式的URL将不会被抓取并显示在结果中。Specify子url选项-s或–seeds,使用示例:pythonphoton.py-u"http://example.com"--seeds"http://example.com/blog/2018,http://example.com/portals.html"您可以使用此选项添加自定义子URL,以逗号分隔。指定用户代理选项--user-agent,使用示例:pythonphoton.py-u"http://example.com"--user-agent"curl/7.35.0,Wget/1.15(linux-gnu)"您可以使用此选项来使用您自己的用户代理,以逗号分隔。此选项仅用于帮助用户使用特定的用户代理,而无需修改默认的user-agents.txt文件。自定义正则表达式模式选项-r或--regex,示例用法:pythonphoton.py-u"http://example.com"--regex"\d{10}"通过使用此选项指定正则表达式模式,字符串可以在抓取过程中提取。导出格式化结果选项-e或–export使用-e选项,您可以指定要保存的文件的输出格式,使用示例:pythonphoton.py-u"http://example.com"--export=json目前支持的格式:json跳过数据提取选项:–only-urls,使用示例:pythonphoton.py-u"http://example.com"--only-urls该选项会跳过提取js文件等数据,当youonly当你需要抓取一个目标时,这个选项可以派上用场。更新选项--update,用法示例:pythonphoton.py--update如果使用该选项,Photon将检查更新。如果有新版本,Photon会下载并合并更新的文件到当前目录,Photon不会覆盖其他文件。忍者模式选项--ninja此选项启用忍者模式。在此模式下,Photon使用以下网站代表您发出请求。codebeautify.orgphotopea.compixlr.comdumpDNSdataoptions--dns,使用示例:pythonphoton.py-uhttp://example.com--dns创建一个显示目标域名DNS数据的图像。当前不支持定位子域。