https://github.com/sunaipa5/reqtor
Library for making http requests over the tor network
https://github.com/sunaipa5/reqtor
golang http tor
Last synced: 2 months ago
JSON representation
Library for making http requests over the tor network
- Host: GitHub
- URL: https://github.com/sunaipa5/reqtor
- Owner: sunaipa5
- License: mit
- Created: 2024-05-07T11:48:59.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-06-15T14:52:44.000Z (11 months ago)
- Last Synced: 2025-01-30T02:28:34.404Z (4 months ago)
- Topics: golang, http, tor
- Language: Go
- Homepage:
- Size: 13.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Reqtor
[](https://pkg.go.dev/github.com/sunaipa5/reqtor)Go library for sending http requests through Tor proxy or any proxy
## Requirements
In order to use the Start, Stop Functions and AutoStart, AutoStop features, the `tor` cli tool must be added to the environment variables, the proxy is set to `socks5://127.0.0.1:9050` by default, you can change the proxy settings as you wish.## Examples
### Sample Get Request```go
package mainimport (
"fmt"
"github.com/sunaipa5/reqtor"
)func main() {
err := reqtor.Start()
if err != nil {
fmt.Println(err)
return
}
resBody, err := reqtor.GetBody("https://example.com", nil)
if err != nil{
fmt.Println(err)
return
}
fmt.Println(string(resBody))err = reqtor.Stop()
if err != nil {
fmt.Println(err)
}
}```
### Send requests with headers and manually make get request
Note : Headers also work with `GetBody` and `PostBody` Functions```go
package mainimport (
"fmt"
"github.com/sunaipa5/reqtor"
"io"
)var RequestHeaders = map[string]string{
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Charset": "UTF-8,*;q=0.5",
"Accept-Language": "en-US,en;q=0.8",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36",
}func main() {
err := reqtor.Start()
if err != nil {
fmt.Println(err)
return
}response, err := reqtor.Get("https://example.com", RequestHeaders)
if err != nil{
fmt.Println(err)
return
}
defer response.Body.Close()
resBody, err := io.ReadAll(response.Body)
if err != nil{
fmt.Println()
return
}
fmt.Println(string(resBody))err = reqtor.Stop()
if err != nil {
fmt.Println(err)
}
}```
### Change Settings
If you want `Tor` to turn off and on automatically every time you make a request, you should set AutoStar and AutoStop to `true`, by default they are `false`. If you want to make requests through a different proxy you can change the `ProxyProtocol`, `ProxyHost` and `ProxyPort` settings, the default values are socks5://127.0.0.1:9050
```go
package mainimport (
"fmt"
"github.com/sunaipa5/reqtor"
)func main() {
reqtor.ProxyHost = "socks5" //Default Protocol - socks5
reqtor.ProxyHost = "127.0.0.1" //Default Host - 127.0.0.1
reqtor.ProxyPort = 9050 //Default Port - 9050reqtor.AutoStart = true //This setting starts automaticly tor cli tool before every request
reqtor.AutoStop = true //This setting stops automaticly tor cli tool after every requestresBody, err := reqtor.GetBody("https://example.com", nil)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(resBody))
}```
### Post Request```go
package mainimport (
"fmt"
"github.com/sunaipa5/reqtor"
)var RequestHeaders = map[string]string{
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Charset": "UTF-8,*;q=0.5",
"Accept-Language": "en-US,en;q=0.8",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36",
"Cookie": "test_cookie=cookie_value; test_cookie2=cookie_value2",
}var PostData = map[string]string{
"name": "john",
"surename": "doe",
"age": "24",
}func main() {
err := reqtor.Start()
if err != nil {
fmt.Println(err)
return
}
// If you are not sending RequestHeader or Post data, replace with nil
resBody, err := reqtor.PostBody("https://example.com", RequestHeaders, PostData)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(resBody))err = reqtor.Stop()
if err != nil {
fmt.Println(err)
}
}```