This question already has answers here:
Can a website know if I am running a userscript?
(2 answers)
How can I prevent a webpage from detecting I am running a script?
(2 answers)
Closed 5 years ago.
I use Tampermonkey (and Allow-control-Allow-Origin) extensions in Chrome to automate procedures on some sites.
The functionality of my user script includes ajax requests locally to an app I have also developed in order to get content from html
and response with 'commands' to perform actions on browser through JavaScript (navigate to other links, set values to fields and press buttons).
However, I am concern on what level the automation of the implemented functionality is visible to the sites.
The questions which are raised are:
Is it possible to detected the use of userscripts from the site provider?
The ajax requests (to local host) can be caught somehow by the site provider (ex. JavaScript code checks all the ajax requests done in browser tab and detect unknown domains/calls )? If yes, what could be the alternative solution?
Is it possible to be distinguished user actions (navigating to other links, adding values to filed, pressing buttons), if those done by user or javascript? (it is assumed that actions aren't performed instantly. Time gaps take place)
Related
This question already has answers here:
Does Iframe Creates separate execution context?
(2 answers)
Will a browser give an iframe a separate thread for JavaScript?
(10 answers)
Closed 1 year ago.
Lets say I have embedded a domain https://imiframe.com as an iframe in a page https://parent.com
If a blocking call is made in the embedded iframe https://imiframe.com , will it block the calls made in the main page https://parent.com ?
Thanks in advance!
Historically this was the case, some modern browsers are moving towards making iframes run in their own thread, but for now at least it is best to assume this is the case until all browsers that your site has to support have been updated.
If you have a blocking function, you would be best advised to run it in a WebWorker, although these lack access to the DOM and communication with them via PostMessage API also has some overhead. Therefore they are not suited to all use cases.
I am playing a Flash-only game that uses AJAX to communicate with the server. The problem is that all the data is "drawn" and most of it not copy/pastable, so I end up retyping URLs and similar stuff from parts of it (i.e., from the chat).
I thought I'd make a simple page action extension for Chrome that would intercept all the AJAX communication between the game and the server, the way Developer tools can do it, and display only the data I'm interested in (parsing URLs and similar stuff is a no-brainer).
However, looking around the internet, I've found no info on how to do this. Many sites (including answers to some questions here) mention using Developer Tools (I'd prefer having a page action extension, simple enough to share with other players, but any other automation is welcome as well), some mention chrome.webRequest (which seems to be able to provide only the headers),...
I also thought of making a content script along the lines of this answer, but since I'm trying to read the data between a Flash applet (not a web page) and a server, I don't think injecting a JavaScript code is possible.
So, my question is: can this be done and, if yes, how?
In case anyone got the wrong idea, the aim of this is only to monitor the communication and extract the parts I'd want to be able to copy/paste, not change any data (i.e., the purpose is simplification of the game play, not cheating).
This question involves both programming and architectural subjects.
Firstly, sorry if it was asked previously, with other words or in another way. I just haven't found anything that matches with my issue.
Here we go. Supose that you have developed a WP app and uploaded it to Windows Store. Now supose you have a webpage named "any_dynamic_name_that_can_change.php" with a button that redirects you to your Windows Store app's page. And now, FROM THE APP (after you install it on your device), you want to know the page's name from where the Windows Store was accessed.
I've checked WP docummentations and I'm fully aware that WP SDK don't have any features that allow us to implement this behavior. In android SDK, one can make use of Referrer/BroadcastReceiver features to pass arguments through your page and Google Play. I've sussccesfuly made it in my Android's app version.
My question is: is there a solution to implement this "know-from" behavior? I don't care if it involves using third systems or saving arguments somewhere, or even if the solution is a "hard-to-do" task. I'm just looking for it, if it exists...
Any hints, comments and answers will be very welcome!
And sorry if my question wasn't well explained, or if it is too broad!
Unfortunately the Windows Phone Store does not provide this and has no way of providing the information that would be needed to implement this either.
The nearest thing you could do would be to look at the IP address of requests to the pages with the links and the first request from the app. Obviously there are lots of reasons why this wouldn't be a perfect solution but it may be better than nothing.
The only other solution would involve the person viewing the page(s) and the app to provide a unique identifier such as their credentials.
An alternative approach would be to track clicks on the individual pages. It wouldn't be able to tell you conversions once the person gets to the store but it could tell you which pages were the greatest drivers of people to your apps in the store.
There is a not so complex way to do that.
Requirements:
Register protocol handler into your app like myappname:// or similar.
The big flow for tracking installation referrer is:
1 - Redirect the user to your site into device system browser http://mysite.com/start_tracking
2 - in that page add cookie to keep track of source page
3 - then Redirect user to the windows phone market installation page
4 - ** INSTALLATION PROCESS ** (this register the protocol handler myappname://)
5 - On the first launch of your native app you need to open the system browser with http://mysite.com/referrer_2_app location, then sys browser send to your web server cookie information stored in step 2.
6 - Then your /referrer_2_app redirect the browser to myappname://cookievalue
7 - This automatically re-open your native app and .....
8 - You are able to read /cookivalue and close your tracking
Hope that this big picture is enough.
If someone need more details let me know.
Tobia
We have a web app that is heavy on AJAX and it is very customizable so we need something that will click on every link in it to make sure that none of the forms/pages break. I know that there are lots of spiders/crawlers out there but we haven't been able to find one that's easy to implement and works with AJAX and allows you to have a session cookie.
Well, considering you asked this question over two years ago I doubt you'll have much need for the answer. But in case someone else comes across this question from a search engine, here's my suggestion:
Use Selenium http://seleniumhq.org/ or IEUnit https://code.google.com/p/ieunit/ to automate a browser itself. They both operate on top of a JavaScript engine so you can write a few lines of code to click on every anchor tag in your site.
I'm trying to log in to a website and save an HTML page automatically (I want to be able to do this on a regular time interval). From the surface, this is a typical modern website where, if the user navigates directly to a "locked" URL, a log-in form pops up, and after logging in, the user is redirected to the intended page.
I gave mechanize a shot (http://wwwsearch.sourceforge.net/mechanize/) but it wasn't finding some form elements which were needed for login (hidden elements that have some values put in by a javascript function that runs when the user clicks the "log in" button).
I played a bit with the "web browser" control in .NET but quickly lost interest because I couldn't even get it to submit a query on the Google page.
I don't care what the language is; I'll learn it to solve this problem. At a minimum it has to work in Windows.
A simple example, say, typing in a query into the Google search box would be a great bonus.
In my experience, the most reliable way is to use javascript. It works well in .Net. To test, browse to the following addresses one after another in Firefox or Internet Explorer:
http://www.google.com
javascript:function f(){document.forms[0]['q'].value='stackoverflow';}f();
javascript:document.forms[0].submit()
That performs a search for "stackoverflow" on Google. To do it in VB .Net using the webbrowser control, do this:
WebBrowser1.Navigate("http://www.google.com")
Do While WebBrowser1.IsBusy OrElse WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
Threading.Thread.Sleep(1000)
Application.DoEvents()
Loop
WebBrowser1.Navigate("javascript:function%20f(){document.forms[0]['q'].value='stackoverflow';}f();")
Threading.Thread.Sleep(2000) 'wait for javascript to run
WebBrowser1.Navigate("javascript:document.forms[0].submit()")
Threading.Thread.Sleep(2000) 'wait for javascript to run
Notice how the space in the URL is converted to %20. I'm not certain if this is necessary but it can't hurt. It is important that the first javascript be in a function. The calls to Sleep() are to wait for Google to load and also for the javascript stuff. The Do While Loop might run forever if the page fails to load so for automation purposes have a counter that will timeout after, say, 60 seconds.
Of course, for Google you can just navigate directly to www.google.com?q=stackoverflow but if your site has hidden input fields, etc, then this is the way to go. Only works for HTML sites - flash is a whole other matter.
If I understand you right, you want to log in to only one webpage, and that form always stays the same. You could either reverse engineer the java script, or debug it via a javascript debugger in the browser (e.g. firebug for firefox). Or you can fill in the form in your browser and look at the http request via a network packet sniffer. Once you have all required form data to submit, you can do the same with your program (thats what I did the last time I had a pretty similar task to do). dont forget to store all cookie data you requested back from the webserver and send it with the next request, to 'stay logged in'.
Its being already discussed here.
Basically its gist is you can use selenium, an open source web automation tool, which has api library available in various languages like java, ruby, etc.
Neoload can handle the form filling with authentication, assuming you don't want to collect data, just perform actions. It's a web stress tool, so it's not really meant to be used as a time-based service, but you COULD just leave it running.
I've used Ruby and Watir (a web app testing suite) for something similar, but it was a very small task (basically visiting URLs from a text file and downloading an image).
There's also an extension called iMacros that can do some automation, but I'm not personally familiar with it (just aware of it).
"I'm trying to log in to a website and save an HTML page automatically"
SAVEAS TYPE=HTM FOLDER=C: FILE=page.html
https://addons.mozilla.org/en-US/firefox/addon/imacros-for-firefox/?src=search
This commands played in iMacros addon will save the page on C: drive and name it page.html
Also,
URL GOTO=www.website.com
Goes on the particular website you want to save. You can also use scripting in iMacros and set different websites in macro.