mirror of
https://github.com/projectdiscovery/httpx.git
synced 2024-10-26 18:08:27 +03:00
c72d98628e
* chore(deps): bump golang.org/x/crypto from 0.14.0 to 0.17.0 (#1493) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.14.0 to 0.17.0. - [Commits](https://github.com/golang/crypto/compare/v0.14.0...v0.17.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump github.com/cloudflare/circl from 1.3.3 to 1.3.7 (#1526) Bumps [github.com/cloudflare/circl](https://github.com/cloudflare/circl) from 1.3.3 to 1.3.7. - [Release notes](https://github.com/cloudflare/circl/releases) - [Commits](https://github.com/cloudflare/circl/compare/v1.3.3...v1.3.7) --- updated-dependencies: - dependency-name: github.com/cloudflare/circl dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump github.com/quic-go/quic-go from 0.37.4 to 0.37.7 (#1531) Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) from 0.37.4 to 0.37.7. - [Release notes](https://github.com/quic-go/quic-go/releases) - [Changelog](https://github.com/quic-go/quic-go/blob/master/Changelog.md) - [Commits](https://github.com/quic-go/quic-go/compare/v0.37.4...v0.37.7) --- updated-dependencies: - dependency-name: github.com/quic-go/quic-go dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update Title Extraction * Make Requsted Changes * Import slices * optional asn --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: sandeep <8293321+ehsandeep@users.noreply.github.com> Co-authored-by: Sandeep Singh <sandeep@projectdiscovery.io> Co-authored-by: mzack <marco.rivoli.nvh@gmail.com>
167 lines
4.1 KiB
Go
167 lines
4.1 KiB
Go
package runner
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
|
|
_ "github.com/projectdiscovery/fdmax/autofdmax"
|
|
"github.com/projectdiscovery/httpx/common/httpx"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestRunner_domain_targets(t *testing.T) {
|
|
options := &Options{}
|
|
r, err := New(options)
|
|
require.Nil(t, err, "could not create httpx runner")
|
|
input := []string{"example.com", "*.example.com", "example.com,one.one.one.one"}
|
|
expected := []httpx.Target{{
|
|
Host: "example.com",
|
|
}, {
|
|
Host: "example.com",
|
|
}, {
|
|
Host: "one.one.one.one",
|
|
CustomHost: "example.com",
|
|
}}
|
|
got := []httpx.Target{}
|
|
for _, inp := range input {
|
|
for target := range r.targets(r.hp, inp) {
|
|
got = append(got, target)
|
|
}
|
|
}
|
|
require.ElementsMatch(t, expected, got, "could not exepcted output")
|
|
}
|
|
|
|
func TestRunner_probeall_targets(t *testing.T) {
|
|
options := &Options{
|
|
ProbeAllIPS: true,
|
|
}
|
|
r, err := New(options)
|
|
require.Nil(t, err, "could not create httpx runner")
|
|
input := "one.one.one.one"
|
|
expected := []httpx.Target{{
|
|
Host: "one.one.one.one",
|
|
CustomIP: "2606:4700:4700::1111",
|
|
},
|
|
{
|
|
Host: "one.one.one.one",
|
|
CustomIP: "2606:4700:4700::1001",
|
|
},
|
|
{
|
|
Host: "one.one.one.one",
|
|
CustomIP: "1.0.0.1",
|
|
},
|
|
{
|
|
Host: "one.one.one.one",
|
|
CustomIP: "1.1.1.1",
|
|
}}
|
|
got := []httpx.Target{}
|
|
for target := range r.targets(r.hp, input) {
|
|
got = append(got, target)
|
|
}
|
|
|
|
require.ElementsMatch(t, expected, got, "could not exepcted output")
|
|
}
|
|
|
|
func TestRunner_cidr_targets(t *testing.T) {
|
|
options := &Options{}
|
|
r, err := New(options)
|
|
require.Nil(t, err, "could not create httpx runner")
|
|
input := "173.0.84.0/30"
|
|
expected := []httpx.Target{
|
|
{
|
|
Host: "173.0.84.0",
|
|
}, {
|
|
Host: "173.0.84.1",
|
|
},
|
|
{
|
|
Host: "173.0.84.2",
|
|
},
|
|
{
|
|
Host: "173.0.84.3",
|
|
}}
|
|
got := []httpx.Target{}
|
|
for target := range r.targets(r.hp, input) {
|
|
got = append(got, target)
|
|
}
|
|
|
|
require.ElementsMatch(t, expected, got, "could not exepcted output")
|
|
}
|
|
|
|
func TestRunner_asn_targets(t *testing.T) {
|
|
if os.Getenv("PDCP_API_KEY") == "" {
|
|
return
|
|
}
|
|
|
|
options := &Options{}
|
|
r, err := New(options)
|
|
require.Nil(t, err, "could not create httpx runner")
|
|
input := "AS14421"
|
|
expected := []httpx.Target{}
|
|
expectedOutputFile := "tests/AS14421.txt"
|
|
// read the expected IPs from the file
|
|
fileContent, err := os.ReadFile(expectedOutputFile)
|
|
require.Nil(t, err, "could not read the expectedOutputFile file")
|
|
ips := strings.Split(strings.ReplaceAll(string(fileContent), "\r\n", "\n"), "\n")
|
|
for _, ip := range ips {
|
|
expected = append(expected, httpx.Target{Host: ip})
|
|
}
|
|
got := []httpx.Target{}
|
|
for target := range r.targets(r.hp, input) {
|
|
got = append(got, target)
|
|
}
|
|
require.ElementsMatch(t, expected, got, "could not exepcted output")
|
|
}
|
|
|
|
func TestRunner_countTargetFromRawTarget(t *testing.T) {
|
|
options := &Options{}
|
|
r, err := New(options)
|
|
require.Nil(t, err, "could not create httpx runner")
|
|
|
|
input := "example.com"
|
|
expected := 1
|
|
got := r.countTargetFromRawTarget(input)
|
|
require.Equal(t, expected, got, "got wrong output")
|
|
|
|
input = "example.com"
|
|
expected = 0
|
|
err = r.hm.Set(input, nil)
|
|
require.Nil(t, err, "could not set value to hm")
|
|
got = r.countTargetFromRawTarget(input)
|
|
require.Equal(t, expected, got, "got wrong output")
|
|
|
|
input = ""
|
|
expected = 0
|
|
got = r.countTargetFromRawTarget(input)
|
|
require.Equal(t, expected, got, "got wrong output")
|
|
|
|
if os.Getenv("PDCP_API_KEY") != "" {
|
|
input = "AS14421"
|
|
expected = 256
|
|
got = r.countTargetFromRawTarget(input)
|
|
require.Equal(t, expected, got, "got wrong output")
|
|
}
|
|
|
|
input = "173.0.84.0/24"
|
|
expected = 256
|
|
got = r.countTargetFromRawTarget(input)
|
|
require.Equal(t, expected, got, "got wrong output")
|
|
}
|
|
|
|
func TestRunner_urlWithComma_targets(t *testing.T) {
|
|
options := &Options{}
|
|
r, err := New(options)
|
|
require.Nil(t, err, "could not create httpx runner")
|
|
input := []string{"http://scanme.sh?a=1,2"}
|
|
expected := []httpx.Target{{
|
|
Host: "http://scanme.sh?a=1,2",
|
|
}}
|
|
got := []httpx.Target{}
|
|
for _, inp := range input {
|
|
for target := range r.targets(r.hp, inp) {
|
|
got = append(got, target)
|
|
}
|
|
}
|
|
require.ElementsMatch(t, expected, got, "could not exepcted output")
|
|
}
|