My hobby for a while has been to collect "X-headers". X-headers are fields in the request HTTP header beginning with an X. Put simply. These fields are kind of non-standard or proprietary add-ons to the regular fields in the HTTP header. These can be used for all kinds of fun stuff when building mobile portals. I have made a collection of some x-headers here.
Usually it is smart to blog about stuff you know. I will be the first to admit that I am on thin ice here, but I hope someone out there becomes a tiny bit more enlightened by this post.
X-headers can be used for many different things: User identification, device detection, probing for network characteristics and much more. This information is useful both in terms of creating a good mobile experience and in terms of statistics.
I have listed a selection of headers below from devices that have visited my site. I don’t know what all of these mean; many can be "man made" for all I know, but it's still interesting. If I am wrong about some, or you have additional information, please comment.
These are headers we already know very well
Header name |
What it means |
x-forwarded-for |
Originating IP of a client connection to the server |
x-forwarded-host |
Origination host name |
x-forwarded-server |
Originating server name |
x-wap-profile |
A reference to the user-agent profile as specified. |
x-wap-profile-diff |
The wap gateway or proxy can choose to override the UA-profile. The diff is specified here. |
Other interesting headers
Header name |
What it means |
x-apn-id |
Identifies the Access Point Name. Wap, internet, email etc. can have different APNs |
x-charging-id |
Anyone know this? It had no value |
x-drutt-3pi-request-uri |
Drutt is a business support system, bought by Ericsson. What this header means? Don't know… |
x-drutt-3pi-serviceid |
Dont know. |
x-drutt-device-id |
Identifies the device by name. For example: "Nokia_N95__S60_browser_" |
x-drutt-request-id |
Usage, unknown. |
x-ebo-ua |
Usage, unknown. |
x-ggsnip |
Contains the IP of the GGSN in the network. |
x-h3g-cc |
Usage, unknown. A header from Three, this… |
x-h3g-client-ip |
The current IP of the device in the network. Identifies session. |
x-h3g-customer-subtype |
Identifies the customers subscription type. |
x-h3g-customer-type |
Identifies the type of customer. |
x-h3g-device-name |
Name of the device. Example value: Nokia-N95-Safari |
x-h3g-nc |
Dont know. Had the value "4". |
x-h3g-network-quality |
Type of network. "3G" for example. |
x-h3g-party-country |
Identifies the home country of the user |
x-h3g-party-id |
Dont know. |
x-h3g-party-status |
Dont know |
x-h3g-party-user-id |
Dont know |
x-h3g-roaming-status |
Identifies if the user is roaming. Bool value |
XID |
Dont know |
x-jphone-color |
Some softbank stuff |
x-jphone-display |
Screen size. |
x-jphone-msname |
Dont know. example value: 821P |
x-jphone-region |
Dont know |
x-jphone-smaf |
Dont know.Example value "40/pcm" |
x-jphone-uid |
A garbled unique identifier of the user |
x-lori-time-1 |
Dont know |
x-net-info |
Dont know. |
x-network-info |
Contains bearer (i.e. GPRS) internal IP address etc. |
x-os-prefs |
Tells something about the capabilities of the device. Example value: "fw:240; fh:320; cd:24c; pl:3; pj:1; pa:1;pi:1;ps:2;" |
x-proxy-id |
Dont know. |
x-psp-browser |
The Playstation Portable browser version |
x-psp-productcode |
Dont know. The value is "CEL" |
x-roaming |
Roaming info. Values "Yes" or "No" |
x-sgsnip |
The IP address of the SGSN |
x-source-id |
Dont know |
x-wapipaddr |
IP address of the wap gateway. |
x-wap-proxy-cookie |
A cookie? |
x-wsb-contextid |
Dont know. Some Vodafone stuff? |
Headers from OpenWave gateways
I am not too familiar with this, so I'll just refer to the wirelessFAQ
Header name |
What it means |
x-up-calling-line-id |
End users phone number |
x-up-devcap-accept-language |
Similar to the accept-language header |
x-up-devcap-cc |
Dont know. Value is "1" |
x-up-devcap-charset |
Charset |
x-up-devcap-charset: utf |
Charset stuff |
x-up-devcap-immed-alert |
Dont know |
x-up-devcap-iscolor |
Defines if the device has a color screen. Bool |
x-up-devcap-max-pdu |
Max size of payload. |
x-up-devcap-msize |
Dont know. |
x-up-devcap-numsoftkeys |
Numbers of softkeys on the device |
x-up-devcap-screen-chars |
Numbers of characters that fits on one line? |
x-up-devcap-screendepth |
Color depth |
x-up-devcap-screenpixels |
Screen size in ipxels |
x-up-devcap-smartdialing |
Dont know what smart dialing is, might be the "click to call" function |
x-up-devcap-softkeysize |
Dont know |
x-up-fax-accepts |
Dont know |
x-up-fax-limit |
Dont know? |
x-up-subno |
Some kind of identifier of the end user |
x-up-uplink |
Seems like the dns name of the wap gateway |
x-up-wappush-secure |
Dont know |
x-up-wappush-unsecure |
Dont know |
x-up-wtls-info |
Dont know. |
Nokia wap gateway headers
Header name |
What it means |
x-nokia-alias |
The end users phone number. encrypted. |
x-nokia-bearer |
i.e. GPRS |
x-nokia-connection_mode |
typically TCPIP |
x-nokia-gateway-id |
Identifies the wap gateway. Seems similar to the use of the Via header |
x-nokia-imsi |
Imsi value |
x-nokia-ipaddress |
Internal IP address |
x-nokia-localsocket |
Internal IP and a portnumber. |
x-nokia-msisdn |
The users phone number in plain text. |
x-nokia-musicshop-bearer |
Nokias music shop. Typically "GPRS/3G" |
x-nokia-musicshop-version |
Nokias music shop. The version. |
x-nokia-prepaidind |
Something to do with the type of subscription. The value is "4" |
Transcoder headers
Header name |
What it means |
x-novarra-device-type |
A Novarra header. Dont know the usage. The value is "0" |
x-operamini-features |
Header added by the Opera Mini proxy. Values are "advanced, download, camera, folding, inputhints" |
x-operamini-phone |
The phone name provided by the Opera Mini proxy. |
x-operamini-phone-ua |
The original user-agent of the device using a Opera Mini browser |
x-original-user-agent |
Googles transcoders way to pass the device' user agent to the server. |
x-surfopen-msisdn |
Some SurfOpen stuff. The value idicates that it is created by humans |
x-moz |
Dont know, but seems to define some kind og proxy behaviour. The value is "prefetch". |
x-bluecoat-via |
Not sure what this is, but probably related to bluecoat. Is it transcoding? |
x-mobile-gateway |
Identifies the gateway/proxy. In this case: "Novarra-Vision/6.9 (TELIASONERA; Server-Only)" |
x-mobile-ua |
This is the Mowser way of transmitting the original user agent |
x-device-accept |
The device' original accept headers when squezed through a transcoder. In this case; Novarra. This behaviour is recommended by w3c |
x-device-accept-charset |
se above |
x-device-user-agent |
se above |
Headers that can be used to identify the end user
Header name |
What it means |
x-drutt-client-ip |
Probably the current IP of the handset. The value is an internal IP in the 10. range |
x-drutt-portal-user-id |
A unique ID of the user in the drutt system. |
x-drutt-portal-user-msisdn |
The mobile phone number. |
x-h3g-msisdn |
the phone number. |
x-imsi |
The imsi number. Identifies the end user. |
x-msisdn |
The end users phone number |
x-nas-ip |
Dont know. The value is an internal IP |
x-wap-clientid |
Seems like a unique identifier of the user. |
x-wap-personalization |
Internal IP of the device in the telecom network |
x-wsb-identity |
End users phone number |
x-wte-msisdn |
Indicates that the value is a phone number. Does not look like that… |
x-nokia-imsi |
Imsi value |
x-nokia-alias |
The end users phone number. encrypted. |
x-nokia-msisdn |
The users phone number in plain text. |
x-up-calling-line-id |
End user identifier |
Header name |
What it means |
x-avantgo-browser |
Identifies the AvantGo browser |
x-avantgo-channelid |
Self explaining |
x-avantgo-clientcharset |
Charset used in the client |
x-avantgo-clientlanguage |
Language code for the cloent |
x-avantgo-colordepth |
Value: "MTY" |
x-avantgo-cradlesync |
Value: "TRUE" |
x-avantgo-deviceid |
String identifying the device. |
x-avantgo-deviceos |
The operating system? |
x-avantgo-deviceosversion |
Os version? |
x-avantgo-deviceprocessor |
Processor? |
x-avantgo-platformdata |
? |
x-avantgo-screensize |
A string providing the screen size? Exampe value: "MTUweDo1MA" |
x-avantgo-tracking-referer |
? |
x-avantgo-url |
If it is an url, it is encrypted. |
x-avantgo-userid |
Identifying the end user. |
x-avantgo-version |
The version of AvangGo |
15 Comments
Hi Jonare, I’ve got a collection of HTTP Headers for you over a few years from a few test devices:
Here is the current file http://wap.defza.com/ua/ua.txt
But you can also look at http://wap.defza.com/ua/ua1.txt … ua2.txt etc
Hi,
I am adding x-imsi=123456789123456 in the HTTP header in the GET request to identify the user at my portal, but
as soon as this change is added, the browsing stops and just re-transmission of GET request and response as 200 OK , goes on and on…
Can somebody please help? And tell what might be getting wrong with this approach
Regards,
Ravi
HOW CAN WE OBTAIN THESE VALUES IN PHP. CAN WE RUN A NORMAL SITE ON WEB BROWSER AND CALL A PHP SCRIPT TO GET THESE HEADERS.
THANKS
Hi,
Need your help.
I work in a Telco company, and try to do an mobile app, and i wanna know some especial info from the clients are using mobile network (2G,3G or 4G) when they comes to “www.mycompanytelco.cl”, like:
1. Phone Number
2. Type of network (2G, 3G or 4G)
3. He is using roaming or not.
when i read your article i realize thats posible, but need more informtion about the responsability from ISP in the configuration to turn on this X-Headers.
(Sorry for my english)
Thanks a lot.
Javier Navarro
Licenciado en Ciencias de Computacion.