Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: villimon в Jun 26, 2016, 17:04



Титла: Web Тестване
Публикувано от: villimon в Jun 26, 2016, 17:04
Здравейте,

Опитвам да си направя проста система за преглеждане не web приложения. Имам два ifram-a и се опитвам заявката от единия да е с мобилен user-agent, а от другия с десктоп user-agent. Можете ли да ми кажете как мога да променя user-agent нa заявката или на браузъра през JavaScript?


Титла: Re: Web Тестване
Публикувано от: NorthBridge в Jun 27, 2016, 00:10
Мда.

User agent-a се съдържа в един от многото хедъри които браузъра праща към сървъра когато пуска заявка. В настройките на повечето човешки браузъри трябва да има на лесно или трудно достъпно място начин да го смениш ръчно, но тогава ще се праща навсякъде, а ти искаш на две места да е различен всеки път. Има едно разширение User Agent Switcher за Firefox, предполагам ще има подобно за Chrome и компания. Другия вариант е да изтеглиш add-on като Postman за Chrome, променяш хедъра, пращаш заявка, копи-пействаш резултата в някой HTML файл, или някое разширение за директно рендиране като HTMLfire и си готов.

Апропо, ако целта ти наистина е да си правиш система за преглеждане на мобилни приложения, на практика ти играеш ролята на прокси. Така че хващаш заявката на клиента заедно с хедърите, променяш User agent хедъра и го засилваш към сайта който искаш да видиш. Само че за това ще ти трябва примерно един скрипт на PHP или някой друг език (сигурно има някакъв начин с вградените модули на уеб-сървъра, ама не мисля че си струва времето и патроните). Там обаче не мога да ти помогна без да знам повече инфо.

Поздрави и бира  [_]3


Титла: Re: Web Тестване
Публикувано от: villimon в Jun 28, 2016, 09:22
User-Agent Switcher ми изглежда доста прилично. Знаеш ли дали има вариянт за динамична промяна на User-Agent-та


Титла: Re: Web Тестване
Публикувано от: remotexx в Jun 28, 2016, 20:25
За съжаление User-Agent Switcher може да изглежда добре, но не поддържа тази функционалност.
Аз ползвам User Agent Switcher, URL sniffer ($2) (за съжаление само за Хром) ..може да изглежда зле/грозно/ но пък поддържа шаблони и става номера  ;)
вж. секция:
* User pattern

А за прокси (ако ти се наложи) ползвам FoxyProxy ($2)
има опция да указваш кое прокси за кои адреси да се ползва и то не само като хост ами по произволно съвпадение в адреса т.е. ако 2-те рамки са ти от един и същи сървър но част от адреса е различна пак ще може да се настрои двете да се зареждат през различни проксита.
Edit Selection -> Url Patterns
HTH


Титла: Re: Web Тестване
Публикувано от: go_fire в Jun 28, 2016, 20:51
Проблема на FoxyProxy, че от едно 15 години и повече вече няма безплатни proxy-та, което го прави абсолютно безполезен.


Титла: Re: Web Тестване
Публикувано от: villimon в Jun 29, 2016, 09:15
Ще уточня малко. Имам два iframе-a да кажем iframe1 и iframe2. В iframe1 искам да заредя www.alabala.com с Android user-agent в iframe2 искам да заредя www.alabala.com с Desktop Linux user-agent. Сещате ли се за някакъв начин?


Титла: Re: Web Тестване
Публикувано от: remotexx в Jun 29, 2016, 20:39
Ами с тоя измислен сайт мога само да гадая.. но все-пак
пробвай с User Agent Switcher, URL sniffer
само че единия адрес го попромени малко но пак да редиректва към същия сайт т.е. само колкото User Agent Switcher, URL sniffer да приложи различен агент
напр. (избери си 2 различни но работещи адреса от долните и си напиши правилата 'внимателно')
http://alabala.com
http://alabala.com/
http://www.alabala.com
http://www.alabala.com/
http://www.alabala.com/?
http://www.alabala.com/index.html
http://www.alabala.com/default.html


Титла: Re: Web Тестване
Публикувано от: villimon в Jun 29, 2016, 20:49
Ами с тоя измислен сайт мога само да гадая..

Извинявай вероятно аз съм виновен но не разбирам. Щом ще е по лесно да ме посъветвате ще ви дам реален пример.

http://www.google.com/

има различно поведение при мобилно и десктоп устройство адреса е един и същ единствено заявката се прави от различни агенти.



Титла: Re: Web Тестване
Публикувано от: runtime в Jun 29, 2016, 21:06
Това с JS няма да стане поради няколко причини, като една от тях е cross-origin-policy.

Ако сървърите са твои и имаш шанса, може да сложиш един SQUID PROXY и да прекарваш фреймовете през проксито, а от проксито да смениш user agent-a.
Лично аз за друг работещ без проблеми вариант се не сещам :)


Титла: Re: Web Тестване
Публикувано от: Naka в Jun 29, 2016, 21:50
Ако ти се прорамира на пхп това може да стане с curl

Фетчваш страницата с curl и след това я изобразяваш. CURL има много опции включително и за юзер агента. Т. Е това е все едно че си правиш собствено пнп прокси.

Обаче юзер агента не достатъчен за пфевключване на мобилно.  Това е доста остарял начин.

Мобилното превключване се прави изцяло с СSS и @media тага.  Превключването става изцяло по точки.  Например ако екрана е по малко от 360 точки превключва

https://en.m.wikipedia.org/wiki/Media_queries

Така че ще трвбва да ограничиш размера на екрана iframe за да се изобрази мобилно ако сайта е така направен


Титла: Re: Web Тестване
Публикувано от: villimon в Jun 30, 2016, 05:45
Опасявах се че няма да стане с JS. Целта ми е да мога лесно да го прехвърлям през различни среди.

Обаче юзер агента не достатъчен за пфевключване на мобилно.  Това е доста остарял начин.

Разгледай google.com ако го отвориш на десктоп и само сменяш ширината на екрана нищо не се променя те зареждат съдържанието според устройството има и други такива.

Не съм ползвал CURL но ще пробвам благодаря за предложението. Ако смятате че има и други подобни ще разгледам и тях.


Титла: Re: Web Тестване
Публикувано от: go_fire в Jun 30, 2016, 08:41


Мобилното превключване се прави изцяло с СSS и @media тага.  Превключването става изцяло по точки.  Например ако екрана е по малко от 360 точки превключва

https://en.m.wikipedia.org/wiki/Media_queries



Naka, сигурно аз съм крив, не отричам, ама в моята практика съм срещал заявки от тип медия само и единствено за разделителна способност, а не точки на инч. Също така никога не съм срещал заявки за печатъщи устройства, прожектори и др., които ги има в стандарта, ала колко и как се поддържат не е ясно.


Титла: Re: Web Тестване
Публикувано от: villimon в Jun 30, 2016, 09:29
Нез знам да ли те разбрах  go_fire. Но @media поставя ограничение от към размера на екрана примерно:

@media screen and (min-width:500px) { ... } ще приложи описаните стилове към екран с ширина по-голяма от 500px което според мен е > 500 точки на екрана. Като под екран имам предвид клиента като браузър.


Титла: Re: Web Тестване
Публикувано от: Naka в Jun 30, 2016, 09:40
Ето ви един пример https://www.rt.com/

почнете да свивате екрана.
Имах в предвид, че и user agenta и резолюцията (@media) трябва да се използват паралено. Но определено света върви към @media.

Това медиа е много хубаво защото в css-a може да имаш няколко  @media сегменти и всеки да дооправя за различна резолюция. Т.е може да имаш не само за телефон, но и за всякакви междинни играчки - таблети, падове...


Продполагам, че просто като се ограничи размера на iframe-а ,без скролери ще стана второто. Пробвай да заредиш такъв сайт(www.rt.com) в ограничен iframe-а и трябва да стане.

А ако наистина ти се занимава с пхп и curl. Може да ти пратя пример. Точно такова подобно, но за други цели правих. Малък е кодът.







Титла: Re: Web Тестване
Публикувано от: go_fire в Jun 30, 2016, 09:50
Вили, аз съм малко нещо изпечен трол и си водим някакви вътрешно-заводски спорове, които нямат някакво особено, конструктивно отношение към темата ти.

Все пак, като вид извинение, че ти влязох с двата крака в темата да взема да ти отговоря.

Заявката, която показваш има отношение към разделителната способност. По-правилно е да се каже разрешителна, но разделителна се е наложило. В случая се касае, че ако устройството е от тип екран и се достигне до по-малко от 500 px ширина, то трябва да се изпълнят еди какви си стилове. Това е по-честият случай, тръгваш от по-голямото и вадиш. Повечето проектанти държат на обратният подход — тръгваш от малкото и прибавяш. Ама те самите никога не го правят. Това 500 дето си намерил е малко измукано, леко несериозно. Няма такива екрани. Тук би трябвало да си е класическото 480…

п.п. Ако си намериш машинка с 500 пиксела на инч, трябва да почерпиш. ЛГ продават такива за няколко хилядарки и то в доста ограничени серии.


Титла: Re: Web Тестване
Публикувано от: Naka в Jun 30, 2016, 10:00
Тези 480 са витуална (цсс) резолюция. Така както го вижда браузера. Но физическа резолюция на телефона е много по голяма. И няма как да не е защото фонтове се рендват изключително добре. Ако например физикалната е 480 и програмата(браузера) рендва на нея, фонта ще излезе изключително ръбест и грозен.

Абе пълна каша.

Между другото описанията в мозила са много добри. https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries


Титла: Re: Web Тестване
Публикувано от: villimon в Jun 30, 2016, 12:15
go_fire благодаря за уточнението това 500 го метнах само за примера.

Naka със сайтове ползващи @media нямам проблем там като задам размери на iframe 240x320 и всичко е 6. Но тия дето ползват user-agenta ме човъркат.


Титла: Re: Web Тестване
Публикувано от: Naka в Jun 30, 2016, 12:44
може и да има начин с JS.
тука пише нещо такова

http://stackoverflow.com/questions/1307013/mocking-a-useragent-in-javascript

всичко би трябвало да може да се сменя преди същинският рекуест от iframe-а. Но може и нарочно да няма начин щото си е хакерия (spoofing).



Титла: Re: Web Тестване
Публикувано от: villimon в Jun 30, 2016, 19:43
Това го пробвах но при мен не сработи


Титла: Re: Web Тестване
Публикувано от: remotexx в Jun 30, 2016, 22:55
Е-е-е-х мама му стара.. колкото приказки изприказвахте - ако беше се хванал досега да беше го направил

Първо уточняващ въпрос - само кода на рамката ли ти трябва с този Агент или и всичките ѝ ресурси? - подозирам че (след малко като види че става) ще искаме и ресурсите  >:D

Сега отговора с пример понеже явно от неразбиране или пък от мързел никой не пробва каквото казах преди и със уговорката че става дума само за кода на рамката (т.е. без ресурсите - за които нищо не се спомена в оригиналиня въпрос)

Искаш пример - ето пример ($2)
добави правила и задай за кои рамки да са активни: главна, суб. и т.н. Важно е да ги запишеш преди да активираш!
Pattern/UserAgent:
*&izmislenDesktop=0*
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
и
*&izmislenMobilen=0*
Mozilla/5.0 (Linux; Android 6.0; 0PJA2 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.99 Mobile Safari/537.36 OPR/35.0.2070.100283

направи двете рамки да зреждат
http://www.xhaus.com/headers?q=ipad&izmislenDesktop=0
http://www.xhaus.com/headers?q=ipad&izmislenMobilen=0
или
https://www.google.com/search?q=ipad&izmislenDesktop=0
https://www.google.com/search?q=ipad&izmislenMobilen=0

Повечето сайтове разрешават да добавиш каквито си искаш параметри - ако не разбират какви са просто ги прескачат (е много малко и предимно некадърно написани сайтове може и да гърмят) т.е. само трябва да уцелиш параметър който сайта НЕ ИЗПОЛЗВА напр. не може да ползваш '&q=' при Гугъл защото и те го ползват но може напр. &izmislen=XXX :-)
Е с Гугъл няма как да стане ($2) щото не разрешават да се показват в рамки (X-Frame-Options), но схващаш идеята..
Между другото и с Гугъл работи (напр. View Source правилно показва леко модифицираните URLs и кода но заради X-Frame-Options не ги рендва)

П.П. А сега нещо и за колегата дето твърдеше, че като вѝдели резолюцията и щели да ми рендват десктоп версията и то не от кой да е а от Гугъл - една голяяяма мобилна версия ($2) (виж адреса)
...ама нали щото е по-лесно първо да приказваме вместо да пробваме.

Корекция: Смених сайта от примера с друг който не детектва дали е в рамка и да заема цялата страница прецаквайки рамките та с xhaus.com вече работи както трябва и си стоят и двете рамки.


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 07, 2016, 02:51
Надявах се, някой да ти каже прочети RFC2616 и нещата ще ти се избистрят, но уви. Всъщност, може би всички от тук коментиращите, този пост ще трябва да прочетат публикацията, за да им се избистрят нещата с протоколната комуникация HTTP :)


Титла: Re: Web Тестване
Публикувано от: remotexx в Jul 08, 2016, 20:46
Надявах се, някой да ти каже прочети RFC2616 и нещата ще ти се избистрят, но уви. Всъщност, може би всички от тук коментиращите, този пост ще трябва да прочетат публикацията, за да им се избистрят нещата с протоколната комуникация HTTP :)

Ммм по-скоро НЕ - RFC2616 is Dead ($2)


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 08, 2016, 21:58
Аз не мога да ти помогна в случая, ако ти сам не изявиш желание. Какво 'Не', като не си го чел?? :D

В случай, че искаш да съм по-конкретен, тогава може да се обърне специално внимание на 7230, секция 2-1. ;)


Титла: Re: Web Тестване
Публикувано от: remotexx в Jul 09, 2016, 00:37
Колега не разбирам какво общо има HTTP или какъвто и да е там протокола с въпроса
"Имам два ifram-a и се опитвам заявката от единия да е с мобилен user-agent, а от другия с десктоп user-agent." т.е. явно става дума за ръчно тестване само с 2 рамки как изглежда при клиента (а не при сървъра) и както вече казах ми отне точно 5 мин. да го тествам и то просто от любопитство дали работи - работеше (по-горе съм описал как става и повече не ми се занимава)

Какъв HTTP намесвате, ами то ако ще е тъй дай направи копие на Гугъл или който е там "толкоз тайния" сайт отсреща да си направи  и направо от сървъра да го сменя, ми така де като ще се застрелваме в крака поне с гаубица да е :-)

Да може да се хакне протокола, да се пусне прокси, да може да се замества Агента динамично и пак опираме до това - как аджеба ще разбере коя заявка от коя рамка идва (те даже са от една страница) та един и същи агент единия път да го замести с едно друг път с друго?


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 09, 2016, 02:11
Проблема е, че какъвто и javascript да се използва за смяна на useragent, той се изпълнява постфактум, според протокола.


Титла: Re: Web Тестване
Публикувано от: remotexx в Jul 11, 2016, 21:18
Проблема е, че какъвто и javascript да се използва за смяна на useragent, той се изпълнява постфактум, според протокола.

Колега объркал си се нещо - човекът иска да си отвори два изгледа (клиентски) - един десктоп и един мобилен т.е. иска да го смени от страна на клиента преди да го изпрати на сървъра (а и сървъра не праща наобратно Агент защото не е клиент) то при изпращане javascript се изпълнява преди да стигнем до HTTP протокола и до мрежовия стек и може да сменя каквото му е разрешено. Съмнявам се директно от задена страница да може да смени агента за последващи заявки но от плъгин може т.е. то там пак е javascript но в друг режим и може повече неща да прави... за което и дадох работещ пример по-горе със User Agent Switcher, URL sniffer.


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 12, 2016, 01:41
Достатъчно добре го разбрах аз и за това няколко пъти споменах RFC-то за HTTP, та уж да стане по-разбираемо. Уви.. ;)

Почвам с картинките :D

Код
GeSHi (Bash):
  1. # nc -lv 80
  2. Connection from 127.0.0.1 port 80 [tcp/http] accepted
  3. GET /useragentchanger.html HTTP/1.1
  4. Host: localhost
  5. User-Agent: Mozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20100101 Firefox/16.0
  6. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  7. Accept-Language: bg,en-US;q=0.5
  8. Accept-Encoding: gzip, deflate
  9. Connection: keep-alive
  10.  
  11. <ТУКА СЕ НАМИРА JAVASCRIPT-A КОЙТО ЩЕ СМЕНЯ АГЕНТА>

От snip-a по-горе, мисля че става по-ясно как стоят нещата с комуникацията между браузъра и сървъра.

Както казах, постфактум.. ;)

Той иска да смени User-Agent-a от useragentchanger.html след като вече браузъра е казал кой е Mozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20100101 Firefox/16.0. Тоест Сървъра ще види, че браузъра е Desktop-ски  и ще му даде сайта, който е за Desktop и чак тогава ще смени User-Agent чрез javascript-a. User-Agent switcher манипулират браузъра от твоя страна преди да направиш каквито и да било заявки към сървъра.

Единствената възможност е проксиране между Клиента(Браузъра) и Сървъра.


Титла: Re: Web Тестване
Публикувано от: go_fire в Jul 12, 2016, 02:57
Де дъст, съвсем очевидно е, че знаеш много повече от нас простосмъртните, домашни потребители. Но някъде по тия ерефцета дето ги цитираш не пише ли, че hyper text transfer protocol-a не поддържа състояние и всяка заявка за него е нова? Поради това се измислят всякакви магарии като бисквитки, буби, заразени uri и т.н.


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 12, 2016, 12:42
go_fire не искам да изглеждам като сноб, но се боя, че е така. Аз се водя от идеята "Hack to learn" и от моя скромен опит не съм намирал  вариант да направя нещо подобно. Темата е хубава, защото могат наистина добри хора да изкажат конструктивни мнения по въпроса, но като цяло си е сериозна борба да излъжеш протокола.

То има начин с нещата, които изброяваш, но те минават след като браузъра вече е казал на сървъра, кой вид е. :)

Съдържанието обаче се сервира на базата на сравняване по User-Agent, което е първия важен параметър по протокол.

Сега ще пробвам някои неща и пак ще пиша, може пък и да стане.  :)


Титла: Re: Web Тестване
Публикувано от: remotexx в Jul 12, 2016, 21:17
@de_dust2 - тотално си се объркал колега

Това което си показал НЕ е което вижда клиента след отговор от сървъра, а е това което вижда сървъра при получаване на заявка.
Клиента/браузър/ дава/слага Агента само при ИЗПРАЩАНЕ на зявка а на обратно сървъра не слага user-agent защото е Server а не е User/Client

т.е. клиента слага User-Agent преди пращане на заявка (и джава скрипт може да го смени преди заявката - чрез плъгин) после сървъра според получения Агент връща съответно мобилна или декстоп версия на страницата и когато клиента я получи:
1. Response няма User-Agent, качи си произволен плъгин и покажи къде в Response има User-Agent (има го само в Request)
2. поради това че няма User-Agent клиента не може вече да го смени (за отговора/кода на текущата зявка) може да го смени замо за последващи т.е. пак го сменя ПРЕДИ за прати зявката а не след получаването на отговор/код


по принцип GET няма BODY,  да по принцип може да пратиш GET зявка със BODY но то обик. се игнорира от сървъра вж. http://stackoverflow.com/questions/978061/http-get-with-request-body
та още веднъж - ако това което следва след ред 10 е част от заявката (GET) то така или иначе ще се игнорира, ако имаш предвид Response то тогава 1) пропуснал си (подвеждащо) HTTP проткола за отговор обик започващ с 200 ОК и 2) в отговора вече няма User-Agent (сървъра не е браузър че да има User-agent нали)

П.П. Аз се надявам че питащият ме разбра защото не се появи повече ...е може и да сте го отказали  ;D
Навремето имаше такъв лаф: "Тези които казват че едно нещо не може да стане не трябва да пречат на онези които го правят"


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 12, 2016, 22:03
Това вече го казах и показах, но ти продължавай да си пишеш глупостите, няма проблем..  8)

Не мога по-ясно да го обясня.

nc е сървъра и за да е видимо какво му праща браузъра съм сетнал verbose

Не знам от кога nc връща отговор без да си му казал.

И пак ти казвам, продължавай да си пишеш глупостите, не ми пречиш.

Мога още по по малоумен начин да ти покажа

Код:
# nc -lv 80 & GET "http://localhost"
Connection from 127.0.0.1 port 80 [tcp/http] accepted
GET / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: lwp-request/5.827 libwww-perl/5.833


 RTFM!!!!!!!!!!


Титла: Re: Web Тестване
Публикувано от: Naka в Jul 13, 2016, 10:45
RTFM!!!!!!!!!!

Преброих ги ама си пропуснал една удивителна.
Мен специално много, ама много ме Мързи да чета документация, RFC**** и прочие там писания.


Титла: Re: Web Тестване
Публикувано от: 4096bits в Jul 13, 2016, 12:39
Не разбирам, защо спорите излишно. Отваря се един Wireshark, пуска се, каквото ще се пуска към сървъра и се гледа отговора. Всичко ще си покаже и излезе. Та... експерименти може да се правят на воля и да се сравнява, какво се случва по един или друг начин.


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 13, 2016, 13:06
Така.. Да може по всякакъв начин да се изтества.

Отговора на основния въпрос на автора се крие в AJAX. Смятам, че jQuery може да помогне в случая, но не съм пробвал. Ако някой има повече опит, може да се пробва и на мен ще ми е интересно да науча нещо ново. :)


Титла: Re: Web Тестване
Публикувано от: 4096bits в Jul 13, 2016, 14:05
И на мен ми е интересна тази тема. Ама кое по-напред. Ще ми трябват десет живота на мен.... или сто.  :D Близнаци съм


Титла: Re: Web Тестване
Публикувано от: NorthBridge в Jul 13, 2016, 18:27
Човека иска да смени един умрял User agent, което се прави с едно хамаво прокси за нула време. Кви са тия RFC-та, body-та на GET параметри, неща, работи, ебаси  ???

Някои сайтове ще му сервират съдържание по user agent (което е тъпо), други ще му засилят малко css с media query-та както каза Наката и ще го оставят да се спасява.

И на мен ми е интересна тази тема. Ама кое по-напред. Ще ми трябват десет живота на мен.... или сто.  :D Близнаци съм

Ставаме двама  :D


Титла: Re: Web Тестване
Публикувано от: remotexx в Jul 13, 2016, 21:27
Много сте ми интересни всички с прекалено сложните решения с външни (спрямо браузъра) решения (били те софтуерни или хардуерни) - хайде да се върнем пак на въпроса:
...Имам два ifram-a и се опитвам заявката от единия да е с мобилен user-agent, а от другия с десктоп user-agent. Можете ли да ми кажете как мога да променя user-agent нa заявката или на браузъра през JavaScript?

Само ще задам доуточняващ въпрос - как извън браузъра ще разберем кой агент да змаеним с мобилен и кой с десктоп след като само браузъра знае коя заявка от кой фрейм идва?
Въпросът е към всички които за разлика от мен си мислят че може да се направи извън браузъра че и "прозрачно" да работи.

за по интересно давам конкретен пример:
таб1.фрейм1 - bing.com - мобилен
таб1.фрейм2 - bing.com - десктоп
таб2 - bing.com търси си нещо човека
и сега нейде по трасето идва заявка за bing.com:
 1) трябва ли да се смени агента? - защото ако е от таб2 не трябва!
 2) с кой по-точно да се смени - мобилен или декстоп?

П.П. и всичкото това писане при вече дадено решение...


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 14, 2016, 03:07
@remotexx -- за втори път го отбелязваш. Простичко, с id-та (name) става:
Код
GeSHi (HTML):
  1. <iframe name="desktop" src="iframe_desktop.htm">
  2. <iframe name="mobile" src="iframe_mobile.htm">

Код
GeSHi (Bash):
  1. Според на httpd лога трябва да стане така:
  2. 1.1.1.1 - - [01/Jan/1337:00:00:00 +0300] "GET /iframe.html HTTP/1.1" 200 000 "-" "Стандартен агент"
  3. 1.1.1.1 - - [01/Jan/1337:00:00:00 +0300] "GET /iframe_desktop.htm HTTP/1.1" 200 000 "http://1.1.1.1/desktop_frame.html" "Десктопски агент"
  4. 1.1.1.1 - - [01/Jan/1337:00:00:00 +0300] "GET /iframe_mobile.htm HTTP/1.1" 200 000 "http://1.1.1.1/mobile_frame.html" "Мобилен агент"

И обяснявам веднага:
От първата заявка, браузъра получава данните за смяна на user-agent за съответните ID/name на iframe-овете и другото съдържание (каквото и да е то). Проблема е, че при статус '200 ОК' връща 0 (нула)  или "The request has succeeded". Тоест, дори и да си сменил user-agent-a за всяка следваща заявка ще трябва да го сменяш пак и пак и пак и пак. Проблема е, че User-agent-a минава първи. :)

Още съм на мнение, че jQuery може да реши проблема, но иска писане, а на мен не ми се занимава. :P


Титла: Re: Web Тестване
Публикувано от: Amateura в Jul 14, 2016, 09:08
Малко ми е неясно, но все пак ... ноже да ти помогне https://www.php-fusion.co.uk/forum/viewthread.php?thread_id=30780 ($2)


Титла: Re: Web Тестване
Публикувано от: Naka в Jul 14, 2016, 13:32
Още съм на мнение, че jQuery може да реши проблема, но иска писане, а на мен не ми се занимава. :P

jQuery нали е JS. не вярвам да използва някакви външни работи/API-та извън JS.
И след като човека каза, че няма начин да стане на JS как тогава ще стане jQuery?


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 14, 2016, 14:43
Предлагам автора да даде малко параметри по отношение на конфигурацията на сървъра. Стига сте стреляли на посоки, а се фокусирайте върху задачата.
'Човека' хубаво го е казал, но преди всичко е добре да се говори с факти, които очевидно той няма.

Не всички по default си сетват 'X-Frame-Options' и 'Content-Security-Policy' или поне не по най-некадърния и параноичен начин.


Титла: Re: Web Тестване
Публикувано от: go_fire в Jul 14, 2016, 18:13
А ве, хора вие я взехте тая тема много на сериозно. Взехте да се показвате, кой,  колко много знае. А никой не забеляза, че тая тема я е пуснал Трипио. Човека няма да разбере и 1‰ от това дето сте писали.


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 14, 2016, 18:29
Не обичам да подценявам. Може пък да му е полезна. В темата има известна част от ключови думички, които може наистина да му свършат работа за в бъдеще.


Титла: Re: Web Тестване
Публикувано от: remotexx в Jul 14, 2016, 20:27
А ве, хора вие я взехте тая тема много на сериозно. Взехте да се показвате, кой,  колко много знае. А никой не забеляза, че тая тема я е пуснал Трипио. Човека няма да разбере и 1‰ от това дето сте писали.

Хехех аз затова дадох и кратко примерче (...и мислех с това да приключа) което даже работи и когато нямаме контрол върху сървъра (напр. Гугъл, Бинг и т.н.)

Сега остава само колегата от "анти-примера" дето първо иска контрол и върху сървръа (за какъвто питащия не е и споменал) да накара Гугъл да си преместят мобилната версия от google.com на google.com/mobile_frame.html само за да му работи примера  >:D

П.П. А иначе забелязах още още отначало че явно питащия не знае как да превключи подреждането на прозорците от cascade на tile или пък знае ама не знае как става само за два прозореца (селекцията) а не за всички едновременно. Това беше първото нещо което си помислих като му видях въпроса  - но реших да отогворя конкретно понеже пък някой се сърдят като не им се отговаря на конкретния въпрос ами се дава просто решение но не каквото са очаквали (като tile м/у 2 джама) та чак да ги кара и те да изглеждат прости.


Титла: Re: Web Тестване
Публикувано от: 4096bits в Jul 14, 2016, 21:16
На мен и друго не ми стана ясно. В браузъра ли трябва да станат нещата или изобщо по какъвто и да е начин. Защото на почти всеки език сигурно, има нужния инструментариум, за да се пращат заявки към сървъра с нужните хедъри, включително и смяна на user agent-а. Това е като разговор по жицата. Казвам, че съм Пешо и няма как да разбереш, дали съм или не, само като ми слушаш, какво ти говоря.

Излишно е изобщо да се обсъжда, какво  и как да се направи, преди да се провери, точно какво връща сървъра при определени заявки от клиента. Пък бил браузър или не. Браузъра визуализира според определени правила HTML-а и евентуално предприема някои действия, ако има JS. Но в основата си всичко е клиент/сървър. Както се даваха примери с разни полускриптчета тук, няма особено значение, какво е генерирало заявката.


Титла: Re: Web Тестване
Публикувано от: pennywise в Jul 15, 2016, 04:41
Това всичкото са невероятни глупости понеже в 90% от случайте няма значение какъв ти е юзер агента, само българските бъгави новинарски сайтове ти дават различни версии според това какъв е.
Да не говорим, че няма значение дали ще го смениш - това няма да ти покаже с пълна точност как ще изглежда сайта за този сайт/юзер агент(най-малкото защото ще имат различни енджини) - единствения сигурен начин е да тестваш с този браузър.
На автора - едиснтвеното нормално решение е прокси, или ако иска да гледа с браузърите да полза виртуални машини, и андроид студио наприпер пак да си емулира андроид устройства.
Иначе уж имало начин с джава скрипт да се манупилира това, но означава да имаш достъп до сървъра, а и незнам до колко ще работи - https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID/userAgent
Нещо подобно -
Код
GeSHi (Javascript):
  1. window.navigator.__defineGetter__('userAgent', function () {
  2.    return 'Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206';
  3. });

Господина специалист който чете еб*ния наръчник и ни кара всички да го четем - можеш ли да не се правиш на ударен и да обясниш как така не можело с джава скрипт а пък можело с jquery?


Титла: Re: Web Тестване
Публикувано от: 4096bits в Jul 15, 2016, 10:23
По принцип си прав. Ако става въпрос за добре написан сайт, няма никаква нужда от смяна на юзър агента. При пристигане на страницата, се определят размерите на дисплея, потребителския интерфейс и се прилагат съответните стилове/CSS посредством JS или JQuery.


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 15, 2016, 13:57
Отказвам се да обяснявам.. Успех в живота.  8)


Иначе facebook.com е един от "българските бъгави новинарски сайтове" :/


Титла: Re: Web Тестване
Публикувано от: pennywise в Jul 15, 2016, 16:38
Отказал се бил. Да ти обясня аз, че явно незнаеш, но пък за сметка на това имаш самочувствие - jquery е библиотека написана на javascript т.е. е javascript.
Това даже го пише на главната им страница - https://jquery.com/
Дали още работи и как става "разбирателството" между браузъра и сървъра, честно казано не ме интересува.
По принцип си прав, че няма логика да може да се сменя user-agenta от сървъра/js, но явно може, или поне така твърдят няколко десетки отговора в stackoverflow.

Когато имаш претенции да знаеш много и да говориш нахално на хората, би следвало тези претенции да имат някакво покритие а не да обясняваш как
Цитат
Още съм на мнение, че jQuery може да реши проблема, но иска писане, а на мен не ми се занимава.
пък не можело с javascript.
Ама то нали джава и джаваскрипт са едно и също, може и да се бъркам и jquery да е джава библиотека  ;)




Титла: Re: Web Тестване
Публикувано от: 4096bits в Jul 15, 2016, 17:33
Защо да не може да се променя юзър агента от JS? При зареждане на браузъра в паметта на компютъра, почти на сто процента съм сигурен, че към работната среда се прибавят един куп допълнителни променливи. Защо JS да не може временно, докато трае сесия или докато е отворен браузъра, да променя стойността на тази променлива. Не съм запознат, как работят браузърите, защото никога не ме е интересувало в подробности, но това е напълно логичен подход. Ако има запознат, да каже. Та според мен жабата може и още как!

Java не е едно и също с JS. А JQuery e JS библиотека.


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 15, 2016, 18:07
The NavigatorID.userAgent read-only property returns the user agent string for the current browser.

Browser identification based on detecting the user agent string is unreliable and is not recommended, as the user agent string is user configurable.

The User-Agent appears in an HTTP Request Header, not an HTTP Response one. In general, the request is sent from browser to the web application. So the user-agent variable is filled by the browser. Different browsers will fill up this field with different values.

Много обичам да ми носят вода от 10 кладенеца и да ме обвиняват все едно аз съм го създал. :D

Да, jQuery си е крос платформа на javascript ама нещо заяждането не ти се получи, май ? Друго да добавиш за jQuery ?

Цитат
По принцип си прав, че няма логика да може да се сменя user-agenta от сървъра/js, но явно може, или поне така твърдят няколко десетки отговора в stackoverflow.
Само един ми покажи. Искам да го видя с очите си, как сървъра сменя юзър-агент и изобщо параметър, който се парсва от браузъра.  Не знаеш се пише отделно, за разлика от неграмотен.  8)


Титла: Re: Web Тестване
Публикувано от: go_fire в Jul 15, 2016, 18:20

Ама то нали джава и джаваскрипт са едно и също, може и да се бъркам и jquery да е джава библиотека  ;)

Пени нещата дето си написал по принцип са така, но това изречение не е вярно.  Общото между двата езика е само името. Буквално няма почти нищо друго. Има малко в идеологията, но е доста смътно и повечето хора не го знаят. Езика отначало се е казвал livescript, но понеже о. Ява е било популярна, туристическа дестинация, а туко ще се е бил пръкнал и друг език с такова име, който бързо набрал известност, та от Нетскейп решили да попият малко и те. И наистина js в първите си дни избуши кочината. Беше луд хит, всички се побъркаха по него. Което пък накара като никога М$ да действат бързо и да предложат vbscript.

п.п. А ве, каква е тая глупост, дето се носи от няколко страници, че не може да се сменя агента? Една от най-популярните добавки е uaswitcher. Ползвам го, не помня от кога. На какво мислите е писан?!? И не мога да схвана проблема. Агента е един най-обикновен ред текст, който се предава заедно с хилядите други заглавки към служителя. Изпълнете един apachectl start, пуснете един telnet към него и си пускайте, каквото искате, да видите, че няма никакъв проблем.


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 15, 2016, 18:46
go_fire в момента в който го спреш или махнеш, агента не ти остава този който ти е бил сложен последен. ;)


Титла: Re: Web Тестване
Публикувано от: pennywise в Jul 15, 2016, 18:47

Пени нещата дето си написал по принцип са така, но това изречение не е вярно.  Общото между двата езика е само името.
Шега е това, по повод връзката на jquery с js, то от там и с джава и джаваскрипт, но една шега ако трябва да се обясни не е много шега...
Знам, че не са едно и също.


Титла: Re: Web Тестване
Публикувано от: NorthBridge в Jul 18, 2016, 11:59
1. Java != Javascript
2. jQuery е JS библиотека
3. User-agent може да се манипулира от клиента както на него му хареса
4. User-agent се съдържа в хедър на заявката която праща клиента
5. За да се смени user agent на една заявка, трябва или клиента да го смени (чрез extension на браузъра например), или заявката да се приеме от прокси което да смени user-agent-а от хедъра и да я прати към сървъра.

Сега нека всички да се съгласим с точките по-горе, да се прегърнем и да запеем весела песен  [_]3


Титла: Re: Web Тестване
Публикувано от: 4096bits в Jul 18, 2016, 13:00
1. Java != Javascript
2. jQuery е JS библиотека
3. User-agent може да се манипулира от клиента както на него му хареса
4. User-agent се съдържа в хедър на заявката която праща клиента
5. За да се смени user agent на една заявка, трябва или клиента да го смени (чрез extension на браузъра например), или заявката да се приеме от прокси което да смени user-agent-а от хедъра и да я прати към сървъра.

Сега нека всички да се съгласим с точките по-горе, да се прегърнем и да запеем весела песен  [_]3
Кратко, ясно и точно.
След като вече се изясниха нещата, може лесно да се сравнят две страници, които връща сървъра при различни юзър агенти. Та, нищо не пречи да се изпратят две различни заявки и да се направи с отговорите, кой, каквото му е угодно.
Някой разбра ли, дали заданието трябва да се изпълни в браузър или може и други начини да се използват?


Титла: Re: Web Тестване
Публикувано от: de_dust2 в Jul 18, 2016, 16:59
Цитат
Та, нищо не пречи да се изпратят две различни заявки и да се направи с отговорите, кой, каквото му е угодно.

Направи го, за да видим какво ще стане. :)