Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在Powershell中循环浏览publicsuffix列表?_Powershell_Public Suffix List - Fatal编程技术网

有没有办法在Powershell中循环浏览publicsuffix列表?

有没有办法在Powershell中循环浏览publicsuffix列表?,powershell,public-suffix-list,Powershell,Public Suffix List,我正在尝试测试一个web过滤解决方案,因此我有一个powershell,它循环遍历URL列表并返回webresponse。问题是,您经常访问CDN或其他可能未经授权的403或404未找到的站点,您需要找到根域 根据我的发现,唯一合乎逻辑的解决方案是对照publicsuffix列表交叉引用它。据我所见,它唯一不能很好使用的语言是PowerShell。我想知道是否有人遇到过这个问题或有解决方案。您可以使用任何目录 $workingdirectory=C:\ 下载公共后缀列表 调用WebRequest

我正在尝试测试一个web过滤解决方案,因此我有一个powershell,它循环遍历URL列表并返回webresponse。问题是,您经常访问CDN或其他可能未经授权的403或404未找到的站点,您需要找到根域

根据我的发现,唯一合乎逻辑的解决方案是对照publicsuffix列表交叉引用它。据我所见,它唯一不能很好使用的语言是PowerShell。我想知道是否有人遇到过这个问题或有解决方案。

您可以使用任何目录 $workingdirectory=C:\ 下载公共后缀列表 调用WebRequest-Urihttps://publicsuffix.org/list/public_suffix_list.dat -OutFile$workingdirectory\public\u后缀\u list.dat 获取文件的内容,删除空白,删除所有 注释,并将其输出到文件 gc$workingdirectory\public\u后缀\u list.dat| ? {$\.Trim-ne}| 选择String-Pattern//-NotMatch| 设置内容$workingdirectory\public\u suffix\u list.dat 虽然可行,但有一种更简洁、更快的替代方案:

Invoke RestMethod$url将指定url处的文本文件作为单个字符串返回

-split`n将字符串拆分为行数组

-匹配“^[^/\s]”匹配那些以“^字符开头的行,该字符来自[…]中包含的集合,它不是“^文字字符”,也不是空格字符,从而有效地过滤掉注释/假设的非数据行

如上所述,将仅数据行数组保存到文件中,如您的解决方案中所示


请注意,确定给定URL是否具有公共后缀涉及的不仅仅是针对数据行的后缀匹配,因为后者具有通配符标签*,并且涉及以!-请参见

该列表似乎是git存储库中的纯文本文件。例如,通过git获取文件并删除所有行注释以及空行。问题解决了。
$url = 'https://publicsuffix.org/list/public_suffix_list.dat'
(Invoke-RestMethod $url) -split "`n" -match '^[^/\s]' |
  Set-Content .\public_suffix_list.dat