Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "flag"
- "fmt"
- "io"
- "log"
- "net"
- "net/url"
- "crypto/tls"
- )
- var httptype string
- var u string
- var uagent string
- var content string
- func initflags(){
- flag.StringVar(&httptype, "t", "invalid", "GET POST or HEAD")
- flag.StringVar(&u, "u", "invalid", "URL")
- flag.StringVar(&uagent, "ua", "invalid", "User Agent") //Not used yet
- flag.StringVar(&content, "c", "", "content") //Not used yet
- }
- func main(){
- initflags()
- flag.Parse()
- url, err := url.Parse(u)
- checkError(err)
- switch httptype {
- case "GET":
- GETRequest(url.Host)
- case "HEAD":
- HEADRequest(url.Host)
- case "POST":
- POSTRequest(url.Host)
- default:
- log.Fatal("Invalid or unsupported type specified, QUITTING!!!")
- }
- }
- func GETRequest(u string) {
- con, err := net.Dial("tcp", u + ":443")
- checkError(err)
- client := tls.Client(con, &tls.Config{
- ServerName: u,
- })
- defer client.Close()
- if err := client.Handshake(); err != nil {
- log.Fatal(err)
- }
- req := fmt.Sprintf("GET / HTTP/1.1\r\n")
- req += fmt.Sprintf("Host: %v\r\n", u)
- req += fmt.Sprintf("Connection: close\r\n")
- req += fmt.Sprintf("\r\n")
- fmt.Print(req)
- _, err = client.Write([]byte(req))
- checkError(err)
- res, err := io.ReadAll(client)
- checkError(err)
- fmt.Print(string(res))
- }
- func checkError(err error) {
- if err != nil {
- log.Fatal(err)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment