Δημιουργήστε ρεαλιστικές συμβολοσειρές user agent προγράμματος περιήγησης με επιλογές φιλτραρίσματος κατά τύπο συσκευής, οικογένεια προγράμματος περιήγησης και λειτουργικό σύστημα. Ιδανικό για δοκιμές ανάπτυξης ιστοσελίδων και ελέγχους συμβατότητας.
Δημιουργήστε τυχαίες, ρεαλιστικές συμβολοσειρές χρήστη για δοκιμές ανάπτυξης ιστού.
Μια συμβολοσειρά User Agent είναι μια συγκεκριμένη αναγνωριστική κείμενο που στέλνουν οι διαδικτυακοί περιηγητές και άλλες εφαρμογές σε ιστότοπους για να αυτοπροσωπούνται. Αυτή η συμβολοσειρά περιέχει συνήθως πληροφορίες σχετικά με τον περιηγητή, το λειτουργικό σύστημα, τον τύπο της συσκευής και την μηχανή απόδοσης που χρησιμοποιείται. Για τους προγραμματιστές ιστού και τους δοκιμαστές, η πρόσβαση σε μια ποικιλία ρεαλιστικών συμβολοσειρών user agent είναι απαραίτητη για τη δοκιμή της συμβατότητας, της απόκρισης και της λειτουργικότητας των ιστότοπων σε διαφορετικές πλατφόρμες.
Αυτό το εργαλείο Γεννήτριας Τυχαίων User Agent δημιουργεί αυθεντικές συμβολοσειρές user agent με βάση τις επιλεγμένες παραμέτρους σας. Μπορείτε να φιλτράρετε κατά τύπο συσκευής (επιτραπέζιο ή κινητό), οικογένεια περιηγητή (Chrome, Firefox, Safari ή Edge) και λειτουργικό σύστημα για να δημιουργήσετε user agents που ταιριάζουν με τις απαιτήσεις δοκιμής σας. Το εργαλείο παρέχει μια απλή διεπαφή με επιλογές για να αντιγράψετε τη δημιουργημένη συμβολοσειρά με ένα μόνο κλικ και να δημιουργήσετε νέες τυχαίες συμβολοσειρές άμεσα.
Οι συμβολοσειρές user agent ακολουθούν συγκεκριμένα πρότυπα ανάλογα με τον περιηγητή και την πλατφόρμα, αλλά γενικά περιέχουν αρκετά κοινά στοιχεία:
Ακολουθεί μια ανάλυση των τυπικών δομών user agent για κύριους περιηγητές:
1Mozilla/5.0 (platform; details) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/version Safari/537.36
2
1Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion
2
1Mozilla/5.0 (platform) AppleWebKit/webkitversion (KHTML, like Gecko) Version/safariversion Safari/safariversion
2
1Mozilla/5.0 (platform) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/chromiumversion Safari/537.36 Edg/edgeversion
2
Η ενότητα πλατφόρμας διαφέρει σημαντικά μεταξύ επιτραπέζιων και κινητών συσκευών:
Παραδείγματα Επιτραπέζιων:
Windows NT 10.0; Win64; x64
Macintosh; Intel Mac OS X 10_15_7
X11; Linux x86_64
Παραδείγματα Κινητών:
Linux; Android 12; SM-G998B
iPhone; CPU iPhone OS 15_4 like Mac OS X
Οι user agents επιτραπέζιων περιλαμβάνουν συνήθως συγκεκριμένες πληροφορίες σχετικά με το λειτουργικό σύστημα, λεπτομέρειες αρχιτεκτονικής (όπως x86_64 ή Win64) και μερικές φορές προτιμήσεις γλώσσας. Τείνουν να είναι πιο συνεπείς μεταξύ των περιηγητών σε σύγκριση με τους κινητούς user agents.
Οι κινητοί user agents περιέχουν πληροφορίες μοντέλου συσκευής, εκδόσεις κινητού λειτουργικού συστήματος και συχνά περιλαμβάνουν τη λέξη "Mobile" στο τέλος. Ο Mobile Safari σε συσκευές iOS θα περιλαμβάνει αναγνωριστικά "iPhone" ή "iPad", ενώ οι συσκευές Android περιλαμβάνουν τον κατασκευαστή και τον αριθμό μοντέλου.
Κάθε περιηγητής ακολουθεί διαφορετικά πρότυπα έκδοσης:
Η τυχαία γεννήτρια user agent έχει πολλές σημαντικές εφαρμογές στην ανάπτυξη και δοκιμή ιστού:
Δοκιμή Συμβατότητας Διαφορετικών Περιηγητών: Δοκιμάστε πώς αποδίδει και λειτουργεί ο ιστότοπός σας σε διαφορετικούς περιηγητές χωρίς να χρειάζεται να εγκαταστήσετε πολλούς περιηγητές ή να χρησιμοποιήσετε πολλές συσκευές.
Δοκιμή Αντίκτυπου Σχεδίασης: Επαληθεύστε ότι ο ιστότοπός σας ανιχνεύει σωστά κινητές και επιτραπέζιες συσκευές και προσφέρει την κατάλληλη διάταξη.
Επικύρωση Ανίχνευσης Χαρακτηριστικών: Διασφαλίστε ότι οι μηχανισμοί ανίχνευσης χαρακτηριστικών του ιστότοπού σας λειτουργούν σωστά για διαφορετικές δυνατότητες περιηγητών.
Δοκιμές QA και Αυτοματοποιημένες Δοκιμές: Ενσωματώστε διαφορετικούς user agents στα αυτοματοποιημένα σενάρια δοκιμών σας για να προσομοιώσετε διάφορα περιβάλλοντα χρηστών.
Δοκιμές Απόδοσης: Αναλύστε πώς αποδίδει ο ιστότοπός σας όταν προσπελαύνεται από διάφορα περιβάλλοντα περιηγητών.
Εντοπισμός Σφαλμάτων Συγκεκριμένων Περιηγητών: Αναπαραγάγετε και διορθώστε σφάλματα που εμφανίζονται μόνο σε συγκεκριμένους περιηγητές ή εκδόσεις.
Δοκιμές API: Δοκιμάστε πώς το API σας χειρίζεται αιτήματα από διαφορετικές εφαρμογές πελάτη.
Ενώ η τυχαία γεννήτρια user agent είναι χρήσιμη για πολλές σενάρια δοκιμών, υπάρχουν εναλλακτικές προσεγγίσεις:
Υπηρεσίες Δοκιμών Περιηγητών: Πλατφόρμες όπως το BrowserStack, το Sauce Labs ή το LambdaTest παρέχουν πραγματικές περιηγητικές περιβάλλουσες για δοκιμές αντί να προσομοιώνουν μόνο τον user agent.
Εργαλεία Ανάπτυξης Περιηγητών: Οι περισσότερες σύγχρονες περιηγητές επιτρέπουν την αντικατάσταση του user agent μέσω των εργαλείων ανάπτυξης τους, που μπορεί να είναι χρήσιμα για γρήγορες δοκιμές.
Επεκτάσεις Αντιστροφής User Agent: Επεκτάσεις περιηγητών που σας επιτρέπουν να αλλάξετε μεταξύ προκαθορισμένων user agents κατά την περιήγηση.
Εικονικές Μηχανές ή Κοντέινερ: Εκτέλεση πραγματικών περιπτώσεων διαφορετικών λειτουργικών συστημάτων και περιηγητών για τις πιο ακριβείς δοκιμές.
Δοκιμές Χωρίς Κεφαλή: Χρησιμοποιώντας εργαλεία όπως το Puppeteer ή το Selenium για να ελέγξετε προγραμματιστικά τους περιηγητές με διαφορετικές ρυθμίσεις user agent.
Κάθε εναλλακτική έχει τα δικά της πλεονεκτήματα και μπορεί να είναι πιο κατάλληλη ανάλογα με τις συγκεκριμένες ανάγκες και πόρους δοκιμών σας.
Η έννοια της συμβολοσειράς user agent χρονολογείται από τις πρώτες ημέρες του Παγκόσμιου Ιστού. Ο όρος "user agent" προέρχεται από την προδιαγραφή HTTP, όπου αναφέρεται στην εφαρμογή πελάτη που κάνει ένα αίτημα σε έναν διακομιστή ιστού.
Ο πρώτος ευρέως χρησιμοποιούμενος περιηγητής, το NCSA Mosaic, περιλάμβανε μια απλή συμβολοσειρά user agent που αναγνώριζε το όνομα και την έκδοση του περιηγητή. Όταν κυκλοφόρησε το Netscape Navigator, χρησιμοποίησε μια παρόμοια μορφή. Ωστόσο, καθώς οι διακομιστές ιστού άρχισαν να παραδίδουν διαφορετικό περιεχόμενο με βάση τον περιηγητή, αναδύθηκε μια πρακτική γνωστή ως "ανίχνευση περιηγητών".
Κατά τη διάρκεια των πολέμων περιηγητών μεταξύ του Netscape και του Internet Explorer, οι ιστότοποι συχνά παρείχαν βελτιστοποιημένο περιεχόμενο αποκλειστικά σε συγκεκριμένους περιηγητές. Για να διασφαλίσουν τη συμβατότητα, οι περιηγητές άρχισαν να περιλαμβάνουν συμβολοσειρές που τους αναγνώριζαν ως άλλους περιηγητές. Γι' αυτό οι περισσότεροι σύγχρονοι περιηγητές εξακολουθούν να περιλαμβάνουν "Mozilla" στις συμβολοσειρές user agent τους, αναφορά στον κωδικό όνομα του Netscape Navigator.
Η άνοδος των κινητών συσκευών εισήγαγε νέα πολυπλοκότητα στις συμβολοσειρές user agent. Οι κινητοί περιηγητές έπρεπε να αυτοπροσωπούνται ως κινητοί για να λάβουν το κατάλληλο περιεχόμενο, οδηγώντας στην προσθήκη αναγνωριστικών συσκευής και κινητών συγκεκριμένων tokens.
Καθώς το οικοσύστημα του ιστού έχει γίνει πιο περίπλοκο, οι συμβολοσειρές user agent έχουν γίνει ολοένα και πιο πολύπλοκες. Τώρα περιέχουν αναφορές σε πολλές μηχανές περιήγησης (όπως "AppleWebKit" και "Gecko") για λόγους συμβατότητας, ακόμη και όταν αυτές οι μηχανές δεν χρησιμοποιούνται πραγματικά.
Αυτή η πολυπλοκότητα έχει οδηγήσει σε προκλήσεις στην ακριβή ανάλυση των συμβολοσειρών user agent, και ορισμένες ομάδες προτύπων ιστού έχουν προτείνει την απόσυρση ή την απλοποίηση των συμβολοσειρών user agent υπέρ πιο δομημένων υποδείξεων πελατών. Ωστόσο, για λόγους συμβατότητας, η παραδοσιακή συμβολοσειρά user agent παραμένει ένα ουσιώδες μέρος της περιήγησης στο διαδίκτυο.
Ακολουθούν παραδείγματα για το πώς να εργαστείτε με συμβολοσειρές user agent σε διάφορες γλώσσες προγραμματισμού:
1// JavaScript: Ανίχνευση τύπου περιηγητή από τη συμβολοσειρά user agent
2function detectBrowser() {
3 const userAgent = navigator.userAgent;
4
5 if (userAgent.indexOf("Firefox") > -1) {
6 return "Firefox";
7 } else if (userAgent.indexOf("SamsungBrowser") > -1) {
8 return "Samsung Browser";
9 } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) {
10 return "Opera";
11 } else if (userAgent.indexOf("Trident") > -1) {
12 return "Internet Explorer";
13 } else if (userAgent.indexOf("Edge") > -1) {
14 return "Edge";
15 } else if (userAgent.indexOf("Chrome") > -1) {
16 return "Chrome";
17 } else if (userAgent.indexOf("Safari") > -1) {
18 return "Safari";
19 } else {
20 return "Unknown";
21 }
22}
23
24// Χρήση
25console.log("Χρησιμοποιείτε: " + detectBrowser());
26
1# Python: Ρύθμιση προσαρμοσμένου user agent σε αιτήσεις
2import requests
3
4def fetch_with_user_agent(url, user_agent):
5 headers = {
6 'User-Agent': user_agent
7 }
8 response = requests.get(url, headers=headers)
9 return response.text
10
11# Παράδειγμα χρήσης
12chrome_ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
13content = fetch_with_user_agent('https://example.com', chrome_ua)
14print(content[:100]) # Εκτύπωση πρώτων 100 χαρακτήρων της απάντησης
15
1<?php
2// PHP: Ανίχνευση κινητών συσκευών χρησιμοποιώντας τη συμβολοσειρά user agent
3function isMobileDevice() {
4 $userAgent = $_SERVER['HTTP_USER_AGENT'];
5 $mobileKeywords = array('Mobile', 'Android', 'iPhone', 'iPad', 'Windows Phone');
6
7 foreach ($mobileKeywords as $keyword) {
8 if (stripos($userAgent, $keyword) !== false) {
9 return true;
10 }
11 }
12 return false;
13}
14
15// Χρήση
16if (isMobileDevice()) {
17 echo "Χρησιμοποιείτε κινητή συσκευή.";
18} else {
19 echo "Χρησιμοποιείτε επιτραπέζια συσκευή.";
20}
21?>
22
1// Java: Δημιουργία τυχαίου user agent
2import java.util.Random;
3
4public class UserAgentGenerator {
5 private static final String[] CHROME_VERSIONS = {"96.0.4664.110", "95.0.4638.69", "94.0.4606.81"};
6 private static final String[] OS_VERSIONS = {"Windows NT 10.0; Win64; x64",
7 "Macintosh; Intel Mac OS X 10_15_7",
8 "X11; Linux x86_64"};
9
10 public static String generateRandomChromeUserAgent() {
11 Random random = new Random();
12 String osVersion = OS_VERSIONS[random.nextInt(OS_VERSIONS.length)];
13 String chromeVersion = CHROME_VERSIONS[random.nextInt(CHROME_VERSIONS.length)];
14
15 return "Mozilla/5.0 (" + osVersion + ") AppleWebKit/537.36 (KHTML, like Gecko) " +
16 "Chrome/" + chromeVersion + " Safari/537.36";
17 }
18
19 public static void main(String[] args) {
20 System.out.println(generateRandomChromeUserAgent());
21 }
22}
23
1# Ruby: Ανάλυση συμβολοσειράς user agent
2require 'user_agent_parser'
3
4def parse_user_agent(user_agent_string)
5 parser = UserAgentParser::Parser.new
6 client = parser.parse(user_agent_string)
7
8 {
9 browser_name: client.family,
10 browser_version: client.version.to_s,
11 os_name: client.os.family,
12 os_version: client.os.version.to_s,
13 device: client.device.family
14 }
15end
16
17# Παράδειγμα χρήσης
18ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1'
19info = parse_user_agent(ua)
20puts info
21
1// C#: Ρύθμιση user agent στο HttpClient
2using System;
3using System.Net.Http;
4using System.Threading.Tasks;
5
6class Program
7{
8 static async Task Main()
9 {
10 // Δημιουργία HttpClient με προσαρμοσμένο user agent
11 using (var httpClient = new HttpClient())
12 {
13 string userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36";
14 httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(userAgent);
15
16 try
17 {
18 // Κάντε αίτηση με προσαρμοσμένο user agent
19 HttpResponseMessage response = await httpClient.GetAsync("https://example.com");
20 response.EnsureSuccessStatusCode();
21 string responseBody = await response.Content.ReadAsStringAsync();
22
23 Console.WriteLine($"Απάντηση που ελήφθη με κωδικό κατάστασης: {response.StatusCode}");
24 Console.WriteLine(responseBody.Substring(0, 100) + "..."); // Πρώτοι 100 χαρακτήρες
25 }
26 catch (HttpRequestException e)
27 {
28 Console.WriteLine($"Σφάλμα αιτήματος: {e.Message}");
29 }
30 }
31 }
32}
33
1// Go: Δημιουργία HTTP αιτήσεων με προσαρμοσμένους user agents
2package main
3
4import (
5 "fmt"
6 "io/ioutil"
7 "net/http"
8)
9
10func main() {
11 // Δημιουργία νέας αίτησης
12 req, err := http.NewRequest("GET", "https://example.com", nil)
13 if err != nil {
14 fmt.Printf("Σφάλμα κατά τη δημιουργία της αίτησης: %s\n", err)
15 return
16 }
17
18 // Ρύθμιση προσαρμοσμένου user agent
19 req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36")
20
21 // Αποστολή της αίτησης
22 client := &http.Client{}
23 resp, err := client.Do(req)
24 if err != nil {
25 fmt.Printf("Σφάλμα κατά την αποστολή της αίτησης: %s\n", err)
26 return
27 }
28 defer resp.Body.Close()
29
30 // Ανάγνωση της απάντησης
31 body, err := ioutil.ReadAll(resp.Body)
32 if err != nil {
33 fmt.Printf("Σφάλμα κατά την ανάγνωση της απάντησης: %s\n", err)
34 return
35 }
36
37 fmt.Printf("Κατάσταση απάντησης: %s\n", resp.Status)
38 fmt.Printf("Προεπισκόπηση σώματος απάντησης: %s\n", body[:100])
39}
40
Ακολουθούν ορισμένα παραδείγματα πραγματικών συμβολοσειρών user agent για διαφορετικούς περιηγητές και πλατφόρμες:
Chrome σε Windows:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
2
Firefox σε macOS:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
2
Safari σε macOS:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15
2
Edge σε Windows:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62
2
Chrome σε Android:
1Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36
2
Safari σε iPhone:
1Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Mobile/15E148 Safari/604.1
2
Firefox σε Android:
1Mozilla/5.0 (Android 12; Mobile; rv:95.0) Gecko/95.0 Firefox/95.0
2
Samsung Internet σε Galaxy:
1Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/16.0 Chrome/92.0.4515.166 Mobile Safari/537.36
2
"User Agent." MDN Web Docs, Mozilla, https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent
"Browser User Agent Strings." WhatIsMyBrowser.com, https://www.whatismybrowser.com/guides/the-latest-user-agent/
"HTTP User-Agent Header Explained." KeyCDN, https://www.keycdn.com/support/user-agent
"Client Hints." MDN Web Docs, Mozilla, https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints
"History of the browser user-agent string." WebAIM, https://webaim.org/blog/user-agent-string-history/
"Browser Detection Using the User Agent." Google Developers, https://developer.chrome.com/docs/multidevice/user-agent/
Ανακαλύψτε περισσότερα εργαλεία που μπορεί να είναι χρήσιμα για τη ροή εργασίας σας