使用PowerShell从URL获取域名?

时间:2020-03-03 02:36:15

标签: powershell

基本上,我有大量的网络钓鱼链接,并且正在尝试精简https://www。以及.com .edu等之后的所有内容,因此,基本上,powershell脚本的理想输出应该是一长串url,所有这些URL看起来都类似于google.com或microsoft.com,到目前为止,我已经导入了csv,但是我尝试了一切要么无效,要么将www留在开始。任何帮助都会很棒。使用的csv im是这样的:http://data.phishtank.com/data/online-valid.csv

$urls = Import-Csv -Path .\online-valid.csv | select -ExpandProperty "url"

2 个答案:

答案 0 :(得分:1)

以下内容将使用您的CSV并为您做魔术。与[Uri]一起玩,在解析Web链接时非常有用。

$csv = import-csv C:\temp\verified_online.csv

Foreach($Site in $csv) {
    $site | Add-Member -MemberType NoteProperty -Name "Host" -Value $(([Uri]$Site.url).Host -replace '^www\.')
}

$csv | Export-Csv C:\temp\verified_online2.csv -NoTypeInformation

根据Mklement0的建议进行了调整。

答案 1 :(得分:1)

Drew's helpful answer一种简洁快捷的选择,它基于将URL字符串直接转换为[uri]System.Uri array )实例,然后从其www.(服务器名称)属性中修剪前缀.Host(如果存在):

([uri[]] (Import-Csv .\online-valid.csv).url).Host -replace '^www\.'

请注意,-replace operator是基于正则表达式的,正则表达式^www\.确保仅在字符串的开头(www)处替换^,并且仅如果后跟一个 literal .\.),在这种情况下,将删除此前缀(用隐含的空字符串替换);如果没有这样的前缀,则输入字符串按原样传递。

该解决方案为了方便和快捷地立即将整个CSV文件读取到内存中,并且仅将经过裁剪的服务器名称输出为字符串数组