otsukare Thoughts after a day of work

Sniffing in China and WAP

Local Markets and Web Habits

Most of Web developers cater first for their local markets. It is a good practice as a first approximation but it also creates challenges for people in other markets. The Silicon Valley has a tendency to think that everyone is using a broadband with the last modern toys. This impression is increased by the fact that indeed in their own community, it is what is happening and so the rest of the world is far from the eyes.

In China, there are still a lot of very simple mobile devices working with WAP (Specific XML markup). Some of the big Web properties cater for these customers. And indeed, Firefox OS smartphones have issues for two reasons:

  • Not known from Chinese servers
  • No capabilities for processing WAP content

Why Firefox OS is receiving WAP content in China?

It's always interesting to discover patterns. When looking at the list of WAP issues, I discovered a pattern:

Server: nginx
Server: Tengine
Server: yy

All the servers were nginx or a variation of nginx. So I started to search a bit if we could find things on the Web about configuration of nginx for Mobile in China. And indeed I started to find the same type of articles copied over and over across Chinese Web sites.

The issue is that this distributed DOS of incomplete information is very hard to fix. It is also happenning in the western communities. Someone publishes an article about the last new feature. The Web developer is barely reading the context and copy and paste the piece of code in his/her own code. The error propagates. I wonder if we should consider Web magazine a virus agent.

So I started to test the sites that we had issues with the user-agents which were described in these articles.

 http --print hH GET  http://youyuan.com/ "User-Agent: Capitel" | grep Content-Type
Content-Type: text/vnd.wap.wml; charset=UTF-8

 http --print hH GET  http://youyuan.com/ "User-Agent: kejian" | grep Content-Type
Content-Type: text/vnd.wap.wml; charset=UTF-8

 http --print hH GET  http://youyuan.com/ "User-Agent: daixan" | grep Content-Type
Content-Type: text/vnd.wap.wml; charset=UTF-8

Indeed we have matches. Basically, the sites are catching most of the things and sending to mobile WAP content or simplified Web content including the pattern:

(.*Mobile.*)|

And then usually do exceptions for

/Android|webOS|iPhone|iPod|BlackBerry/i

which are sent to a touch Web site.

It's a tough one to solve, Firefox on Android will be caught by Android but Firefox will be caught as a simple mobile or WAP mobile. A (dirty) way to catch Firefox OS in this case would be

/mobile.*firefox/i

And we all shed a tear on the altar of proper Web development.

Otsukare.