このコミットが含まれているのは:
守矢諏訪子 2023-05-12 16:34:02 +09:00
コミット dab171d533
2個のファイルの変更44行の追加17行の削除

ファイルの表示

@ -17,7 +17,7 @@ func getpage (url string, path string) {
defer curl.Body.Close()
body, err2 := io.ReadAll(curl.Body)
if err2 != nil {
fmt.Println("読込エラ", err2)
fmt.Println("読込エラ", err2)
return
}

ファイルの表示

@ -7,13 +7,14 @@ import (
"net/http"
"io"
"regexp"
"errors"
)
func scanpage (path string, domain string, thisdomain string) {
func scanpage (path string, domain string, thisdomain string) error {
fn, err := os.ReadFile(path + "/index.html")
if err != nil {
fmt.Println("ファイルを開けられなかった:", err)
return
fmt.Println(err)
return errors.New("ファイルを開けられなかった:")
}
/* 削除 */
@ -23,7 +24,17 @@ func scanpage (path string, domain string, thisdomain string) {
var video = regexp.MustCompile(`(<video.*</video>)`).ReplaceAllString(string(audio), "")
var iframe = regexp.MustCompile(`(<iframe.*</iframe>)`).ReplaceAllString(string(video), "")
/* 追加ダウンロード+ローカル化 */
var ass = regexp.MustCompile(`(<img.*src="|<meta.*content="|<link.*href=")(.*\.)(png|webm|jpg|jpeg|gif|css)`)
var ass = regexp.MustCompile(`(<img.*src="|<meta.*content="|<link.*href=")(.*\.)(png|webm|jpg|jpeg|gif|css|js)`)
spath := "static/"
if !strings.HasSuffix(path, "/") {
spath = "/" + spath
}
spath = path + spath
err1 := os.Mkdir(spath, 0755)
if err1 != nil {
fmt.Println(err1)
return errors.New("失敗:")
}
for _, cssx := range ass.FindAllString(iframe, -1) {
s := regexp.MustCompile(`(.*src="|.*content="|.*href=")`).Split(cssx, -1)
@ -37,10 +48,10 @@ func scanpage (path string, domain string, thisdomain string) {
if filename == "" {
continue
}
f, err := os.Create(path + "/" + filename)
f, err := os.Create(spath + filename)
if err != nil {
fmt.Println("2. 作成失敗:", err)
return
fmt.Println(err)
return errors.New("2. 作成失敗:")
}
defer f.Close()
@ -50,23 +61,39 @@ func scanpage (path string, domain string, thisdomain string) {
}
i, err := http.Get(af)
if err != nil {
fmt.Println("2. ダウンロードに失敗:", err)
return
fmt.Println(err)
return errors.New("2. ダウンロードに失敗:")
}
defer i.Body.Close()
_, err = io.Copy(f, i.Body)
if err != nil {
fmt.Println("2. コピーに失敗:", err)
return
if strings.HasSuffix(filename, "css") || strings.HasSuffix(filename, "js") {
body, err := io.ReadAll(i.Body)
if err != nil {
fmt.Println(err)
return errors.New("2. 読込エラー:")
}
_, err2 := f.WriteString(string(body))
if err2 != nil {
fmt.Println(err)
return errors.New("2. ファイル書込エラー:")
}
} else {
_, err = io.Copy(f, i.Body)
if err != nil {
fmt.Println(err)
return errors.New("2. コピーに失敗:")
}
}
iframe = strings.Replace(iframe, ss[0], "/" + filename, -1)
iframe = strings.Replace(iframe, ss[0], "/static/" + filename, -1)
}
err := os.WriteFile(path + "/index.html", []byte(iframe), 0644)
if err != nil {
fmt.Println("書込に失敗")
return
fmt.Println(err)
return errors.New("書込に失敗")
}
}
return nil
}