子域名抓取不准确
banshijun opened this issue · 3 comments
针对baidu.com jd.com等抓取的很准确,但是针对政府网站抓取不正确。。根据政府网站命名规则。,,,123.xxx.gov.cn(代表某厅网站),而某省网站是xxx.gov.cn 这样在抓取某厅的二级域名时,会将某gov.cn认为一级域名,而抓取某省所有厅部门网站,,,,而非某厅的二级域名
分析作者的源码,发现在处理子域名的时候考虑不周全:
def find_subdomain(urls, mainurl):
url_raw = urlparse(mainurl)
domain = url_raw.netloc
miandomain = domain
positions = find_last(domain, ".")
if len(positions) > 1:miandomain = domain[positions[-2] + 1:]
作者在处理时直接取域名.分隔最后两部分作为顶级域名,遇到xxx.gov.cn所以就会出错,建议使用tld库来处理:
from tld import get_fld
miandomain = get_fld(mainurl, fail_silently=True, fix_protocol=True)
这是我测试的结果:
修正前:
➜ JSFinder git:(master) ✗ python3 JSFinder.py -u http://www.cq.sgcc.com.cn -d
Find 4 Subdomain:
www.sgcc.com.cn
www.cq.sgcc.com.cn
www.indaa.com.cn
dps.cq.sgcc.com.cn:10080
www.indaa.com.cn其实不属于sgcc.com.cn子域名,属于误判断
修正后:
www.sgcc.com.cn
www.cq.sgcc.com.cn
dps.cq.sgcc.com.cn:10080
在find_by_url处理subdomain时也有一处代码需要修改。
另外,有部份代码也需要优化一下。感谢分享。
分析作者的源码,发现在处理子域名的时候考虑不周全:
def find_subdomain(urls, mainurl):
url_raw = urlparse(mainurl)
domain = url_raw.netloc
miandomain = domain
positions = find_last(domain, ".")
if len(positions) > 1:miandomain = domain[positions[-2] + 1:]作者在处理时直接取域名.分隔最后两部分作为顶级域名,遇到xxx.gov.cn所以就会出错,建议使用tld库来处理:
from tld import get_fld
miandomain = get_fld(mainurl, fail_silently=True, fix_protocol=True)这是我测试的结果:
修正前:➜ JSFinder git:(master) ✗ python3 JSFinder.py -u http://www.cq.sgcc.com.cn -d
Find 4 Subdomain:
www.sgcc.com.cn
www.cq.sgcc.com.cn
www.indaa.com.cn
dps.cq.sgcc.com.cn:10080www.indaa.com.cn其实不属于sgcc.com.cn子域名,属于误判断
修正后:www.sgcc.com.cn
www.cq.sgcc.com.cn
dps.cq.sgcc.com.cn:10080在find_by_url处理subdomain时也有一处代码需要修改。
另外,有部份代码也需要优化一下。感谢分享。
你好,能帮忙开一个PR吗?
分析作者的源码,发现在处理子域名的时候考虑不周全:
def find_subdomain(urls, mainurl):
url_raw = urlparse(mainurl)
domain = url_raw.netloc
miandomain = domain
positions = find_last(domain, ".")
if len(positions) > 1:miandomain = domain[positions[-2] + 1:]作者在处理时直接取域名.分隔最后两部分作为顶级域名,遇到xxx.gov.cn所以就会出错,建议使用tld库来处理:
from tld import get_fld
miandomain = get_fld(mainurl, fail_silently=True, fix_protocol=True)这是我测试的结果:
修正前:➜ JSFinder git:(master) ✗ python3 JSFinder.py -u http://www.cq.sgcc.com.cn -d
Find 4 Subdomain:
www.sgcc.com.cn
www.cq.sgcc.com.cn
www.indaa.com.cn
dps.cq.sgcc.com.cn:10080www.indaa.com.cn其实不属于sgcc.com.cn子域名,属于误判断
修正后:www.sgcc.com.cn
www.cq.sgcc.com.cn
dps.cq.sgcc.com.cn:10080在find_by_url处理subdomain时也有一处代码需要修改。
另外,有部份代码也需要优化一下。感谢分享。你好,能帮忙开一个PR吗?
已提交PR