• 12-11-2025, 12:11:02
    #1
    Selamlar,

    Bir sistemde redirect url işlemem gerekiyor ve şuanda 10gbp/s portlu cihazlardan url'nin redirect url'sini çekiyoruz 1.05 saniye sürelerinde çekiyor.
    Bundan daha hızlı 0.5 saniye içnide çekmesi içni yapılabilecek örnek kodunuz var mı?
  • 12-11-2025, 12:18:45
    #2
    0.70 saniye civarında veriyor.
    #!/usr/bin/env python3
    import time,sys;from urllib.parse import urljoin;import requests;from requests.adapters import HTTPAdapter
    def get_first_redirect_url(u,t=(2,3)):
     s=requests.Session();a=HTTPAdapter(pool_connections=1,pool_maxsize=1,max_retries=0);[s.mount(x,a) for x in['http://','https://']]
     s.headers.update({"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"})
     for m,to in[("HEAD",(1,2)),("GET",t)]:
      try: r=s.request(m,u,allow_redirects=False,timeout=to,stream=False);break
      except requests.RequestException as e:
       if m=="GET":raise e
     st=r.status_code;loc=r.headers.get("Location")
     if 300<=st<400 and loc:return urljoin(r.url,loc)
     return None
    def main():
     try:
      u=input("Kontrol edilecek URL: ").strip()
      if not u:print("Boş URL veremezsiniz.");sys.exit(1)
      t0=time.time();r=get_first_redirect_url(u);t1=time.time()
      et=t1-t0
      if not r:print("Redirect yok veya Location header bulunamadı.");print(f"\033[92mİşlem süresi: {et:.2f} saniye\033[0m");return
      print("\nİlk redirect URL (url1 -> url2):");print(r)
      print(f"\n\033[92mİşlem süresi: {et:.2f} saniye\033[0m")
     except requests.RequestException as e:print(f"Hata: {e}")
     except KeyboardInterrupt:print("\nİptal edildi.")
    if __name__=="__main__":main()
  • 12-11-2025, 12:20:55
    #3
    0.50 saniye civarında çekebiliyor GO bilenler bunu deneyebilirsiniz;
    package main;import("bufio";"context";"fmt";"net/http";"net/url";"os";"strings";"time")
    
    func g(u string)(string,error){M:=[]struct{m string;t time.Duration}{{"HEAD",2*time.Second},{"GET",3*time.Second}}
    ua:="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
    c:=&http.Client{CheckRedirect:func(r *http.Request,v []*http.Request)error{return http.ErrUseLastResponse}}
    for _,x:=range M{ctx,cl:=context.WithTimeout(context.Background(),x.t)
    req,er:=http.NewRequestWithContext(ctx,x.m,u,nil);if er!=nil{cl();if x.m=="GET"{return"",er};continue}
    req.Header.Set("User-Agent",ua);resp,er:=c.Do(req);if er!=nil{cl();if x.m=="GET"{return"",er};continue}
    st:=resp.StatusCode;loc:=resp.Header.Get("Location");resp.Body.Close();cl()
    if st>=300&&st<400&&loc!=""{return rU(resp.Request.URL.String(),loc),nil}
    if x.m=="HEAD"{continue}};return"",nil}
    
    func rU(b,r string)string{u,e:=url.Parse(r);if e!=nil{return r};if u.IsAbs(){return u.String()}
    bu,er:=url.Parse(b);if er!=nil{return r};return bu.ResolveReference(u).String()}
    
    func main(){rd:=bufio.NewReader(os.Stdin);fmt.Print("Kontrol edilecek URL: ")
    i,er:=rd.ReadString('\n');if er!=nil{fmt.Println("Hata:",er);return}
    u:=strings.TrimSpace(i);if u==""{fmt.Println("Boş URL veremezsiniz.");os.Exit(1)}
    st:=time.Now();r,er:=g(u);et:=time.Since(st)
    if er!=nil{fmt.Printf("Hata: %v\n",er);return}
    if r==""{fmt.Println("Redirect yok veya Location header bulunamadı.")
    fmt.Printf("\033[92mİşlem süresi: %.2f saniye\033[0m\n",et.Seconds());return}
    fmt.Println("\nİlk redirect URL (url1 -> url2):");fmt.Println(r)
    fmt.Printf("\n\033[92mİşlem süresi: %.2f saniye\033[0m\n",et.Seconds())}