s-rah / onionscan

OnionScan is a free and open source tool for investigating the Dark Web.
https://twitter.com/OnionScan
Other
2.89k stars 599 forks source link

Does Onionscan Download images? #131

Closed Minyall closed 7 years ago

Minyall commented 7 years ago

A quick clarification.

Does Onionscan actually download data that could be reconstructed into an image? I noticed a few GIF references in the snapshot data and wanted to be certain that no actual images were being collected, just the HTML code. Automatically downloading images off the dark web is unlikely to go down well with my research ethics committee.

s-rah commented 7 years ago

Yes. This option really should be behind a flag/config and should be fairly trivial to implement. The actual logic is done here - https://github.com/s-rah/onionscan/blob/master/spider/onionspider.go#L208 and currently onionscan grabs all jpeg files for the purposes of EXIF data extraction - you can either uncomment the snapshotting or remove that block all together.

At some point each mime type should be associated with it's own config as there are lots of fingerprintable files we might want to grab and check.

Minyall commented 7 years ago

Thanks for the quick response. I've forked and removed that block as suggested. All working fine so far. Thanks for the help (again!)

Minyall commented 7 years ago

Hello again! I took out the code you suggested. I also removed earlier code in the scraper as I found I was still picking up .jpg and .png images in the onionscandb.

for _, image := range crawlRecord.Page.Images {
-                   if !exclude(image.Target) {
-                       processURI(image.Target, base)
-                   }

However having removed both the suggested block, and the above I still appear to be pulling images... or are these (below) just records of images without associated reconstructable image data? If they are just records it is fine, but I can't pull anything that could be considered an image, even if it is in a 'deconstructed' binary form. Any thoughts would be appreciated. My ethics committee can be quite risk averse.

{"URL": "http://lunacycipxdcd5rp.onion/img/menu/right.jpg", "Page": {"Scripts": null, "Snapshot": "", "Headers": {"Last-Modified": ["Fri, 24 Feb 2017 17:21:12 GMT"], "Server": ["Apache/2.4.10 (Debian)"], "Content-Type": ["image/jpeg"], "Etag": ["\"115d-54949f4d21063\""], "Content-Length": ["4445"], "Date": ["Fri, 05 May 2017 23:55:14 GMT"], "Accept-Ranges": ["bytes"]}, "Images": null, "Title": "", "Forms": null, "Hash": "", "Raw": "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", "Status": 200, "Links": null, "Anchors": null}, "Timestamp": "2017-05-05T23:55:14.924780028Z"}

s-rah commented 7 years ago

hmm looks like you are still pulling images, which shouldn't be possible if you had removed the code I linked - note that this (https://github.com/s-rah/onionscan/blob/master/spider/pageparser.go#L35) is the only function where Raw is populated in the stored JSON so if you are removing the only call to snapshot binary resource (https://github.com/s-rah/onionscan/blob/master/spider/onionspider.go#L208) then there should be no way it should be populated like the about JSON states.

Silly question but are you sure you compiled the edited code prior to running OnionScan?

Minyall commented 7 years ago

Ok, completely not a silly question because that may be precisely the issue. Short answer is I don't know if I have compiled the edited code , so most likely I haven't.

Basically after forking and removing the block of code suggested, I initialized a new clean server, got Go installed and then did the following.

go get github.com/Minyall/onionscan getting my fork repository of onionscan. go install github.com/Minyall/onionscan

and then used my python wrapper from there. Is it possible that I am essentially downloading a modified repository but then installing the already compiled version of Onionscan rather than installing a modified version? As onionscan worked without compiling before, I wasn't aware that there was a compile stage. I also noted that onionscan/protocol/http_scanner.go has an import line that specifically imports github.com/s-rah/onionscan/spider. Would this override any edits in my own repository by importing from yours?

Sorry if these are pretty fundamental mistakes. I'm still fairly new to anything beyond basic scripts in python. How would I ensure that I'm using the modified version of onionspider.go?

Minyall commented 7 years ago

To follow up as I looked into compiling: I set up a clean server used go get github.com/s-rah/onionscan I then found my way to the downloaded files through $GOPATH/github.com/s-rah/onionscan I edited onionspider.go removing lines 208-210 using nano. I then cd back to my user directory and ran go build github.com/s-rah/onionscan which gave me an onionscan binary in my user directory. I then ran ~/onionscan lunacycipxdcd5rp.onion as a test, extracted the records from the onionscandb and still have snapshots of image files (see below).

Did I mess up somewhere in the process of rebuilding onionscan?

{"URL": "http://lunacycipxdcd5rp.onion/img/menu/right.jpg", "Timestamp": "2017-05-07T23:15:49.948441206Z", "Page": {"Links": null, "Anchors": null, "Hash": "", "Scripts": null, "Forms": null, "Snapshot": "\ufffd\ufffd\ufffd\ufffd\u0000\ufffdExif\u0000\u0000II*\u0000\b\u0000\u0000\u0000\u0007\u0000\u0012\u0001\u0003\u0000\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u001a\u0001\u0005\u0000\u0001\u0000\u0000\u0000b\u0000\u0000\u0000\u001b\u0001\u0005\u0000\u0001\u0000\u0000\u0000j\u0000\u0000\u0000(\u0001\u0003\u0000\u0001\u0000\u0000\u0000\u0002\u0000\u0000\u00001\u0001\u0002\u0000\u0015\u0000\u0000\u0000r\u0000\u0000\u00002\u0001\u0002\u0000\u0014\u0000\u0000\u0000\ufffd\u0000\u0000\u0000i\ufffd\u0004\u0000\u0001\u0000\u0000\u0000\ufffd\u0000\u0000\u0000\u0000\u0000\ufffd\u0000H\u0000\u0000\u0000\u0001\u0000\u0000\u0000H\u0000\u0000\u0000\u0001\u0000\u0000\u0000PhotoFiltre Studio X\u00002017:01:15 22:42:47\u0000\u0003\u0000\u0000\ufffd\u0007\u0000\u0004\u0000\u0000\u00000210\u0002\ufffd\u0003\u0000\u0001\u0000\u0000\u0000\ufffd\u0000\u0000\u0000\u0003\ufffd\u0003\u0000\u0001\u0000\u0000\u0000\ufffd\u0000\u0000\u0000\ufffd\ufffd\u0000C\u0000\u0006\u0004\u0005\u0006\u0005\u0004\u0006\u0006\u0005\u0006\u0007\u0007\u0006\b\n\u0010\n\n\t\t\n\u0014\u000e\u000f\f\u0010\u0017\u0014\u0018\u0018\u0017\u0014\u0016\u0016\u001a\u001d%\u001f\u001a\u001b#\u001c\u0016\u0016 , #&')*)\u0019\u001f-0-(0%()(\ufffd\ufffd\u0000C\u0001\u0007\u0007\u0007\n\b\n\u0013\n\n\u0013(\u001a\u0016\u001a((((((((((((((((((((((((((((((((((((((((((((((((((\ufffd\ufffd\u0000\u0011\b\u0000\ufffd\u0000\ufffd\u0003\u0001\"\u0000\u0002\u0011\u0001\u0003\u0011\u0001\ufffd\ufffd\u0000\u001f\u0000\u0000\u0001\u0005\u0001\u0001\u0001\u0001\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\ufffd\ufffd\u0000\ufffd\u0010\u0000\u0002\u0001\u0003\u0003\u0002\u0004\u0003\u0005\u0005\u0004\u0004\u0000\u0000\u0001}\u0001\u0002\u0003\u0000\u0004\u0011\u0005\u0012!1A\u0006\u0013Qa\u0007\"q\u00142\ufffd\ufffd\ufffd\b#B\ufffd\ufffd\u0015R\ufffd\ufffd$3br\ufffd\t\n\u0016\u0017\u0018\u0019\u001a%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0000\u001f\u0001\u0000\u0003\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\ufffd\ufffd\u0000\ufffd\u0011\u0000\u0002\u0001\u0002\u0004\u0004\u0003\u0004\u0007\u0005\u0004\u0004\u0000\u0001\u0002w\u0000\u0001\u0002\u0003\u0011\u0004\u0005!1\u0006\u0012AQ\u0007aq\u0013\"2\ufffd\b\u0014B\ufffd\ufffd\ufffd\ufffd\t#3R\ufffd\u0015br\ufffd\n\u0016$4\ufffd%\ufffd\u0017\u0018\u0019\u001a&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0000\f\u0003\u0001\u0000\u0002\u0011\u0003\u0011\u0000?\u0000\ufffd\"\u0004\ufffd\ufffdx\"\ufffdL\ufffd\ufffd\ufffd\ufffdIj\ufffd\ufffd\ufffd\ufffdn*-\ufffd\ufffdg\ufffd\ufffdi!\u0012\ufffd\ufffd\u0000\ufffd\u6565\ufffd\b^\ufffd\ufffdZ\"\u001b\u0002\ufffd\fCc\ufffd\ufffd&\ufffd\ufffdO\u000f\ufffdR\ufffd\ufffd@<g\ufffd%\\\u0015\u0007\ufffd\ufffd\ufffd\ufffdP\u0000\ufffd\ufffdlV$\u0000>\u0003\u0013\ufffd\ufffd\ufffd\u000f\ufffd\ufffd\u0003\ufffd+OR\u04d7O\ufffd'\ufffd[ucN\ufffdq \ufffd\ufffdN\ufffdb\u0294+\ufffd\ufffd\ufffd\u04a2'\u000f\ufffdI\u0007\ufffd\ufffd)\ufffdF\ufffd\ufffd$\ufffd\r5d\ufffd,2}\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd<y#\ufffdZ\u0019Y\ufffdf,@\u001c\ufffd\ufffdKjF\u03bc\ufffd\ufffd\ufffdf\r\ufffd&\ufffd\u03e5\f\b\ufffd32\ufffd\u0012j\ufffdj\u00156\ufffd\u0006==\ufffd\ufffdL\ufffd\u0011\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u007f\ufffdF=\ufffdx\ufffdR\u0005\ufffdaa\u0010\u0004v\ufffd\ufffd\u0013FWp\ufffd\u04b4\ufffd\ufffd\ufffd\ufffd\u0016F\ufffd85\u000b<l\u012f {\ufffd\u0017\u001a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdWq\u001cq\ufffdlN\ufffd\ufffd\u0006\u0001\u001d*\u0401\ufffd \ufffd8\ufffd\u0011\ufffd\ufffd\u02fbO\ufffd?\ufffd1\ufffd\ufffdRk\ufffdm\ufffd\ufffd8\ufffd(\ufffd\ufffdF\u0000\ufffd\ufffd\ufffd\ufffd\ufffd\u0015n9\f\u032b\u001f%\ufffd\ufffd\u01f1\ufffd<\ufffd\ufffdS[?\ufffd\u0006\ufffd\u0000\ufffd\ufffd\ufffd\ufffd\u001c\ufffd\ufffd!d\u0007oL\u04a9$a\ufffd&\ufffd#\u01b0\ufffd\ufffdA\u0014\u0001Zy\u0002F\u0019\ufffd5\br\u001f98\ufffd\ufffd\ufffd,\ufffd\ufffd&B\ufffdA\u0015\u0014\ufffd\ufffdB\ufffd\ufffd\ufffd\u01804\ufffdu\u0003qn\ufffd\ufffdX\ufffd2j\ufffd\ufffd\ufffdi\u0001\\\ufffd})\ufffd\ufffd\ufffd\ufffd'\ufffdE\ufffd\ufffd*\u0010GJ\ufffd4\\\ufffd|\ufffd\ufffd\ufffd3fH\ufffd\ufffdR\ufffd\ufffd#\ufffdb\ufffd\ufffd\ufffd\ufffd\u0018*r\u0005L\ufffd]\u0001\u0003,9\ufffdU9\ufffd\u0005>\t\u0019\u001b\ufffd\b<b\ufffd\u000f\ufffd\ufffd\u0278\u001eH5\ufffd\ufffd\ufffdD1\ufffd|\ufffd\ufffd\ufffd\u04b3\u001d\t%\ufffd\u0006*\ufffd{\ufffd\ufffd2\u0115\ufffd\ufffdL\u000bv\u0013\u0018ar\ufffd\ufffd}i\ufffd\u0481\u0001-\ufffd\ufffdj\ufffd(Q\ufffd\ufffd\ufffdj}\ufffd\u0370\ufffd\u0000\ufffd\ufffd%\ufffdo\ufffd\ufffd*8\u001c\u6d61\ufffdW\ufffdG\u001bI\ufffdk.8>\ufffd\ufffdG\ufffd[\ufffd\ufffd2\f\ufffd\ufffd\ufffd\f\ufffd\ufffdV\ufffd\b'O=\ufffd\u008a\ufffd\ufffd\u0004\r%\ufffdz\ufffd\ufffd\ufffd\u001d\ufffde\ufffd\ufffdORzQ\u001a\ufffd\ufffd[\ufffd=\ufffd(\ufffd\ufffd\ufffd\ufffdi\u0453\ufffd\u0000\ufffdRL\u000b\u0011\u0012B\ufffd\ufffdj\ufffd\ufffdfR\ufffd\ufffdEH\u0007\ufffdW9\u36b3fa\ufffd\u0019\ufffd\ufffd$\u0010\u0005 3\ufffdr\ufffd\ufffd\u04e5;\ufffd\"\ufffdO\u001d1S,\r$\ufffdv\ufffd\ufffd\ufffd*i\ufffd\u0012\ufffdW\u0003\ufffd\ufffd1\u0011E\u0018 \ufffd\ufffd\u0019\ufffdi\ufffd\ufffds\ufffd\ufffdv\ufffdx\ufffd\ufffd\ufffd\ufffd>7\ufffd\ufffd\ufffd\ufffd\ufffd,J\ufffdJnS\ufffd\ufffdYX\ufffd\u0001\ufffd\ufffd\ufffd\ufffd\ufffd\u0003?r\u0005H\ufffd\ufffdT\u0013\ufffd\ufffd!\ufffd\ufffdy\u0002\ufffd@\uf692H\ufffd\\\u00102\ufffd\ufffd\u0516\ufffd~\ufffd\ufffd\ufffd\ufffd>\ufffdz\ufffd\ufffd\u034b\ufffdcR\ufffd\ufffd=i6\u0006a%\u0655\ufffdz\ufffdV\ufffd\ufffdbG\ufffd;\ufffd\ufffd\ufffd\ufffd \ufffd\ufffdy\u001cU\ufffd\u001b\b\ufffds\ufffd\ufffdOq\u001ar\ufffdb\ufffd\ufffd\u0006\u000e*GD\u0005G\ufffdc\ufffd6)\u0015\u0011\ufffd\ufffd\u05da\"\ufffd[v98\ufffd4X.K\u001a\ufffd^}j\ufffdj\ufffdP\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2d2c\ufffd<c\u0000sE\ufffd\ufffd\ufffd\ufffd\ufffd\u0000\ufffdk\ufffd\ufffd\u0001\ufffd\u0014Q\ufffd\u001f\ufffd\ufffd\ufffd\f\ufffd\ufffd\n(\u0019\ufffd\u0001\ufffd\n8'\ufffdvL\u0004\u00102\u0001\ufffd9\u0015\u0019\ufffd\ufffd!M\u0759\u0014\u001c\ufffdK\ufffdD\ufffd\ufffd\ufffdl\ufffd\ufffdM'\ufffd\ufffd\u0018\ufffdr\b\ufffdO\ufffdW\ufffd\u001bh\ufffdL~u\n\ufffd2\u000f3%H\u0226\ufffd\ufffd\ufffd\ufffd&20:\u001fZ\ufffd\ufffd\u0019\ufffd\ufffd\u01e8\ufffdV\ufffderK\ufffd\ufffd;\u001ad\ufffd\u0014l\nH\ufffd1C\u0002\ufffd\u000e\ufffdW\u0019\ufffdjzrp\b\ufffd\ufffdi\ufffd\u001bw\u03b8\ufffd5f8\ufffdYIC\ufffd0)\ufffd\ufffd\ufffdL\u0000>j\ufffd?\ufffdR\ufffd\ufffd^h\ufffd\u001d\ufffd\u0003\ufffdg\ufffdJ\ufffdr3\ufffd\ufffd\ufffd\ufffd\ufffdbFHs\ufffd\ufffdj\u052cdR@\ufffd\u0015\ufffd\ufffd\ufffd\ufffd4L\ufffdc\ufffd\u0002F)XH\ufffd\u0012+\ufffd\ufffd\ufffd=\ufffd\ufffdx\ufffdQ\u00112A\ufffd\ufffd\u0003\u0004\ufffd\u00129\ufffd2+}\ufffdnQ\ufffdi\ufffd\ufffds,\u0003\ufffd#\ufffdT\u00029C\u0002\ufffd\u001ct\u0015r\ufffd2\ufffdI\ufffd\ufffdJ\ufffdO\u0323\ufffd\u0584+\u0014a2\ufffd\ufffd\ufffd$\ufffd\ufffdz\ufffd\ufffd\ufffd\ufffd1\ufffd\ufffdT\ufffd\ufffd\ufffd$\ufffd\f=j\ufffd\ufffd0\ufffd\u001c\u001e\ufffd\ufffd-\u0015u\ufffd\r\ufffd\ufffd\ufffdN\ufffd\ufffd\ufffdZ)\ufffd\ufffdyZQ\u0007\ufffd\n)-B\ufffd6%\ufffdq\u0019\ufffdG\ufffd\u0019\ufffdS\ufffd\ufffdc\u008a\u01cf\ufffd\ufffdx\ufffd\ufffd\ufffd$\u001fJ\u0019E\ufffd|\ufffd\ufffdR\b\ufffdjv\ufffdN\u0001\ufffd]\ufffd\ufffd*\u0001e\u001b\ufffd1\ufffd\u001c\ufffd\ufffd[(\ufffdw\u0006 \ufffd\ufffd\u0784!\u0494 \ufffdrz\ufffd|7\"8\ufffd\u02b9%v\ufffd\ufffd\b\ufffd\ufffd\u0012\ufffd\u0006\ufffd\ufffd\r\ufffd\ufffd\ufffd\ufffd\ufffdaq\f\ufffd@\b\u001c\ufffd\u0006:U\ufffdT\ufffd\u00012\ufffd<\ufffdB\u001c\u001eq\u07ae\ufffd\bV~G\ufffd\u0002l_0\ufffd\ufffd\ufffd\ufffd\u00caPI;d\ufffd\u000fZ\ufffd\u000e\ufffd7\ufffd\u00a6H\ufffda\ufffd_J\u0004J\ufffd\2\ufffd\u0015\ufffd\ufffdj\ufffd\ufffdd@\u0000\ufffdg\ufffdWc\ufffdD\ufffdGS\ufffd\ufffd\a\ufffd\ufffd\ufffd\u0001\ufffd\ufffd\u0012\u000e\ufffd\ufffd\u04ac\u0128\ufffd@I\ufffd\ufffd\ufffd\ufffd\u001e\ufffdBwHi\ufffd\ufffd\u0004\u001b\ufffdz\ufffdU\ufffdx\ufffd]\ufffd\u0001\ufffdj\u001bp\u00166!\ufffd\ufffdy\ufffdP\u001c7N\ufffd\r\u0013\ufffdR'\ufffd\ufffd\ufffd\ufffd\u001f\ufffd@\ufffd\ufffd\ufffd\u0011\ufffd\ufffdQ3\ufffdy\ufffd{\n\ufffd\u0004{\ufffd,y\ufffd\"\ufffd\ufffd\ufffdyt\ufffd\u001b\ufffdw.(\ufffdu\ufffd\t\ufffdH\u0003s\ufffdh\ufffd\ufffd\ufffd%\f\ufffd\ufffd\ufffd\b\u0015f\ufffd\"X'p:UU\ufffd\ufffdFs\ufffd\ufffdS+H\u001c\u0014\ufffd\u000f\ufffd4\ufffd\"\u00df.2d\ufffdn\ufffd\ufffd\ufffdG\u001c\ufffd8\ufffdj\ufffdG&P\ufffd\u0003\ufffd\u050d\u001a\ufffd\ufffd9\ufffd\u0003\ufffd\u0002\ufffd\u0000,[<\ufffd\ufffdLL\ufffd\u0018\ufffd\u001d95\"\ufffdG\u000bdq\ufffdb\ufffd\u0019<\f})\ufffdjH\"\ufffd\u050c\ufffd\u001e\ufffd\ufffd#\ufffd\ufffd\ufffd\u0000\ufffd\u0488\u0006G\ufffd\ufffd\ufffd\ufffd*\ufffdv\ufffd\u0017\u001dZ\ufffd!V\u0000b\ufffd\ufffd8~3\ufffd\ufffd>V\ufffdc\ufffd\u001e\ufffd\ufffdO\u001a~\ufffd\u0001\ufffd\ufffd\ufffd\u0002,\u0018\ufffd\ufffd\ufffd\ufffd\u0015\\ufffdI\b+\ufffd\ufffd0;!\u0001y\u0014J>|\u33ed\"\ufffd\u0013\ufffd\ufffd\ufffdD\ufffd\ufffd/SQ\ufffd\ufffd\ufffd\u007fJ\ufffd2\ufffd\ufffdA\ufffd1\u0016\ufffd\ufffd\ufffd\ufffd\ufffdS\ufffd#\u00fd\u0449\ufffdX\ufffd,I=j\ufffd\u04d6`\u0001\ufffdP2\u044d\u0004\ufffd\ufffd\u0001\ufffdz\ufffd\u0014Q\ufffd\u0019q\ufffdeN\ufffd\ufffd\ufffd\r\ufffd\u07da\u0012f\u0003\ufffdr\ufffdX\u0007\ufffd\ufffd\u0011\u001b)\ufffdS\ufffd\u0007\u0003\ufffd\u0015\ufffd\ufffd\ufffd-\ufffd\u0000\ufffdf\u00074P33\nQH\u001d95r \u0004 \ufffd\u0000\u0011\ufffd\ufffd\ufffd\ufffd\ufffd$g8\u01f5Y]\ufffd\"\ufffd\ufffd\ufffd\n\ufffd \ufffd\ufffd<u\u001f\S\ufffd\ufffd\u0000[\ufffd\ufffdN\ufffd\t\u0003\ufffd\u001a\u0001b\ufffd\u33b4\ufffdd\ufffd7\ufffdX\ufffdf\ufffd\ufffd\ufffd\ufffdg\ufffd'\u000e\ufffd\ufffd\u00151\ufffdG\u0016\ufffd\ufffd\u0007\ufffd\ufffd\ufffd0\u001bm;\t\ufffd\ufffd\ufffd\u001f\ufffd:[\ufffd\u0017Q\ufffd:w\u0003\ufffdA\ufffd\ufffd[\u001c\u2895Y\ufffd\ufffd#\ufffd\ufffd1\ufffd\u0416S!\ufffd\ufffdz\ufffd\u04318Lg\u0015F'\ufffd\ufffd \ufffd\ufffdjh\ufffd+\ufffd\u0019\ufffd\u0002f\ufffdf1\ufffd\ufffd\ufffdy\ufffdL\ufffd\ufffd\ufffd\ufffd<\ufffd|1\ufffd\u04d1\ufffd\ufffd08\ufffdD\ufffd#;\ufffd\u0019\ufffd\ufffdN\ufffdC\u0000?\ufffdD\ufffd\u000f\ufffdKk1\u0005\ufffdg\u001d\ufffd\u0019z6\u0005\ufffd\u001e1P^lW\ufffdl\ufffd\ufffd\r\u0010\u001f\ufffd-\ufffd4\u06543\ufffd\u0013\ufffd\ufffdsB\u0006D\ufffdUy$\ufffd\ufffd\u0000\u0012 \\ufffdX\ufffdB\ufffd\ufffd\u0014\ufffd\ufffd\u0017\ufffd\ufffd#\ufffd\u6609\ufffdKb,\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u000e}(\ufffd\ufffd\ufffd\u001aKR$,YH\u00034S\u0019A\u0007\u0004\ufffdB\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd6\ufffd\ufffdLT\u0013\ufffdW\u000b\ufffd\u0002\ufffd\ufffd\ufffda\ufffdpp\u000f\u0015\ufffdC\ufffd\ufffd\ufffd'\u001fJ\ufffd\u001cm\u000f\f1\ufffd\ufffd6\r\ufffd\ufffd$\ufffdS\ufffd>g\ufffd\ufffdS\ufffdI4hq\ufffd\ufffd \u001eqM\ufffd\ufffd\ufffd\u007f\ufffd9\ufffda2lm\ufffd'#8\ufffdj\u0007\ufffd\ufffd\ufffd|\ufffd\ufffd\u0000%\ufffd\u001e\u0013\u0014\ufffd\ufffde\ufffd\u03e0\ufffd\ufffd\ufffd\ufffdrM<\ufffd\ufffd\u001d\ufffd\u0018\ufffd\ufffd\ufffd\u0000\u000e\u0001\ufffdh@\\u001a\ufffd(\ufffd\u0001\u0007\ufffd=\u0018\ufffdz\u0003\ufffdLm\u0016\ufffd,F\u00075e\u0000\u06bd8\ufffd\ufffd\ufffd\u0000+\r\u07e1\ufffdh\ufffdr\u0001\ufffdE\ufffd\ufffdbOB\ufffd\ufffd\u0004\u0006\ufffdh\u0019\\ufffdN)\u0007\ufffd\ufffd0\ufffd\u000esH\u000b\u0011\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0011\ufffdn\u04df\u03a0(Q\ufffd\f\ufffd\ufffd\u06f8\ufffd\ufffdA1\u001c\ufffdG\u04d1@\u0014QwG\ufffd\r\ufffdt\ufffd\u7244Q\ufffd@;\ufffd\ufffd\ufffdUU\u001cpG\\ufffd\ufffdV\u0004\ufffd2m\ufffd\u0003 S\u0004P\ufffdRb%z\u0002(\ufffd7\u0011\u0006\ufffd\ufffd\ufffd\ufffdQJ\ufffdX\u0311\u0010\ufffd18\"\ufffd\ufffdh\ufffd'aV\u001ft\ufffd\ufffd;U{\u001ac\ufffd\ufffdFq\ufffd)-\u0189 \ufffd\ufffd\ufffd\u0007\ufffd:\u001a\ufffdl\ufffd[\ufffd\u0003\ufffdz\ufffd\ufffd\ufffdWn:u\ufffd\ufffdr\u000b\ufffdOU\ufffd\u0014\ufffd'\ufffd\u001cL\ufffd+\ufffd\u0002[\u0015P\ufffd\ufffd\u001a\ufffdycr\ufffd\u0017\ufffdZ\ufffd \u001e{\ufffd\ufffd\ufffd\ufffdBDH3\ufffdO \ufffd\ufffd\u0014\ufffd\r\ufffd}3Q\ufffd\ufffd\ufffd\ufffdL\ufffddR?\u0261\u0014\u0219C!\u0000\ufffd\u001di-\ufffd\ufffdgy\ufffd\u000e*e]\ufffdFx\ufffdxL\ufffd\ufffd\u0018^\ufffd\ufffda\\cH\ufffd\ufffd<\u001a\ufffd\u001b\ufffdS\ufffd\ufffd\ufffd\"\ufffd?!w}\ufffd\ufffd\ufffd\ufffd)g\bv\ufffd\ufffdq\\\ufffd\u001f\ufffd\u001f('\u0014\ufffdI\u0007\u0002\ufffdm\ufffdU@4\ufffd\ufffd\ufffdc\ufffd\ufffdLtX\ufffd9+W\ufffd\ufffd\ufffdqV\u0018\bk9c\ufffd\ufffdY\ufffd=\ufffd[\u0013\ufffdZO\u0011'wj,#5\ufffd\ufffd\ufffd\ufffd\n\ufffd\ufffd\ufffd\ufffd\u000e\u0003\u000e\ufffd\ufffd\ufffd\ufffd\u0000s\ufffd\ufffd\ufffd\u037f\ufffd\u0001\ufffd\ufffd\u0014}(\u0019R\ufffdr\ufffdI\ufffd\ufffdg\u0014Q\ufffddB\ufffd:\u0012(\ufffd\ufffdg3\ufffdny=1K3\u0000\ufffd\u0007S\ufffd4\f\u001ey\ufffd4\u0247\ufffd\u0003\ufffd\ufffd\ufffdH\u0011<#2\f\ufffd\ufffd\ufffdtD,\ufffd\ufffd\ufffdg<T\u00101\ufffd8$\ufffd\ufffd8|\u035e\u0007\\ufffd\ufffd\ufffd\ufffd\ufffdL>b\ufffd#?\ufffdH\ufffd\ue61ct\ufffdL\ufffdj\ufffd\ufffd\ufffd\ufffdS\ufffd8b\ufffd\ufffd\ufffd\ufffd\ufffd\"$\HMH\n\ufffd\ufffdh\ufffdA\ufffdA'\ufffd\ufffd\ufffd\ufffd$\u0000\u000e)\ufffd\u0719%H\ufffd2\ufffdF\ufffd!.\ufffd\ufffd\u0003\ufffd'8\ufffd\u000b\fr!Wn}\ufffd\t\"\u0002O?\ufffd\ufffd\u0004\ufffd\ufffd\b<\ufffd\ufffd\ufffd\rJ\ufffdc\ufffd\ufffdc\ufffdVC\ufffdhU\u001d\ufffd#\u04a1\ufffd\ufffd\ufffd\u001e\r\u0000\ufffd\ufffd\u000b)\ufffd\u0007Jw\ufffd\u0000\ufffd-\u0293\ufffd\ufffd\ufffd\u0701#\ufffdq\ufffd6\"\u0006\ufffd(\ufffd\ufffdE\ufffd&\ufffd{f2F8\ufffd\ufffd\r2#pJ\ufffd\ufffdn\ufffd5\u0004V\ufffd\u025d\ufffdA\u00038\ufffd\ufffdq\ufffd;\ufffd\ufffdm\u0014\u0005\ufffdX%\ufffd\ufffd~\ufffd\ufffdT\ufffdW\u001e{*\ufffd\ufffd\u0002\u0000x\ufffd\ufffd}*\ufffdu\u000b\ufffd\ufffd\ufffd2\u0120\u0000\ufffd\u007f\ufffdUe\ufffd\ufffd\u000b\ufffdUpQr\u0001\ufffdZC\ufffd\ufffd\u001dG\ufffd}\ufffdA\u0014U\ufffdB(\u0175\ufffd '\ufffd\ufffd\ufffd(\ufffd4a\u03b1\ufffd\u0002\ufffd\ufffd\u0011Q\u038a\ufffd\ufffd\ufffdl\ufffd\ufffdc\ufffdT\ufffdF\ufffd\u0013+rT\ufffdQ\u0014,\ufffd\ufffd\u0011\ufffd\u04a4\u0013 \u0007cc\ufffd=\ufffd\0R\ufffdV\ufffd\ufffd'\ufffd\ufffd\u0011\ufffdT\ufffd\ufffdW\ufffd\ufffd\ufffd8\ufffd\u0005\D8\u001c\ufffd5\ufffde\ufffd\ufffd\ufffdq\ufffd<\u000f\u05b2Q\ufffdc\ufffd\ufffdqV$\ufffd\ufffd\ufffdRq\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd>zs\ufffd\u0508\ufffd$P\ufffd\ufffd\ufffd\ufffd\u0002\ufffdO\u0480\ufffd\u0016<t\ufffd\ufffdb\ufffd\ufffdy\ufffdpx\ufffdys+?C\ufffd\ufffd\ufffdW.;u\ufffd\ufffd\ufffd2\ufffdPs\ufffdJ\u2c2d'\ufffd\ufffd\u0018\ufffdJYa\b\ufffd\ufffd\ufffd\u0016<\ufffdJA\u000e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd]\ufffd#\ufffd)\ufffd\ufffd\ufffdp\ufffd\ufffd\u000f\\u0544x\ufffd\ufffd\ufffdqLdUDc\ufffd\ufffdJ\u0002\ufffdv\ufffd\u001fZB4&\ufffd\"\ufffd<-\ufffd\ufffdL\ufffd\ufffd\ufffdx.\ufffd\ufffd<v\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd?2\ufffd\\ufffd\u0011\ufffdw\ufffd\ufffd9\u03ed43G\ufffd3I\u001b1\ufffd\u01e5\"9x\ufffd\ufffds\ufffd\ufffd\ufffd\u001c\ufffdy\u0012\u001c\ufffd}\ufffd\ufffd\ufffd\u0019H\ufffd\ufffd\ufffdE\ufffd\ufffd\ufffd\ufffd\u06e6\u034f\ufffd\ufffd\ufffd\u8a2f\ufffd\ufffd\ufffd\ufffd\u007fw\ufffd\ufffdE\ufffd\ufffdY7`\ufffd\n\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u06a5\ufffd\ufffd$\ufffd\ufffd|\ufffds\ufffd\u0019\ufffdi\u0002\u001c\ufffd40\ufffd\u001dH\ufffdXB\ufffdl1\ufffd\ufffd\ufffd\ufffds\u0122\ufffd)9\ufffd6\u000f\ufffd>\ufffdB\"e\ufffd\u0003\ufffd\u0582\ufffd\ufffd\ufffd\ufffdl\ufffd\ufffdN>\ufffd\ufffdT9B8\u001d\u000fz\ufffd\u0017f\ufffd\ufffdi\ufffd\u0221Kw\ufffd\ufffdP\ufffd\ufffd\ufffd\u0011UX\u000e\ufffd\ufffd\ufffdl\ufffdH\u001c\ufffd\ufffdg\ufffd rz/\ufffd\rT\ufffd\ufffds\ufffdy\ufffdI\u001f\ufffd@\ufffd=\ufffd\ufffdR!\ufffd\u0019\ufffd\u000f\ufffdD\ufffd g\ufffd\u0014\ufffd\u0006\ufffd\u0018\ufffd*\ufffd\ufffd]\ufffd\ufffd\ufffd\ufffd#\ufffd\ufffdFs\ufffdj\ufffd\ufffd\ufffd\ufffd\ufffd\u04dc\ufffd\ufffd\ufffd\ufffd\ufffdE\ufffd-R&\u0147!\ufffd\u001fAM\ufffd\u001c\ufffd\ufffd\ufffd$@\ufffdFGS\u05a2\ufffd\r\ufffd\ufffdC\u0003H\ufffdF\ufffd\ufffds\ufffdQN\ufffd\ufffd\u0006$\u2805q\ufffdN3W$b\u0466}(@\ufffd\ufffd\ufffdy)\ufffdp\u000f\ufffd\ufffd\ufffdb\f;\ufffdj\ufffd\ufffd\ufffdl\f\u0001\ufffd\ufffd4lX\u0000O\u0004f\ufffd\u2c61u\">\ufffd\ufffdO8Z+:PDm\ufffdn\ufffd\ufffdV\u0019\ufffd\ufffd", "Headers": {"Content-Length": ["4445"], "Date": ["Sun, 07 May 2017 23:15:49 GMT"], "Accept-Ranges": ["bytes"], "Server": ["Apache/2.4.10 (Debian)"], "Content-Type": ["image/jpeg"], "Etag": ["\"115d-54949f4d21063\""], "Last-Modified": ["Fri, 24 Feb 2017 17:21:12 GMT"]}, "Raw": null, "Title": "", "Images": null, "Status": 200}}`

s-rah commented 7 years ago

Looks like you will also need to delete the second snaphot clause: https://github.com/s-rah/onionscan/blob/master/spider/onionspider.go#L211 that should enforce snapshotting only for for html pages.

Minyall commented 7 years ago

That did the trick. I still have entries for images but the snapshot key is empty, however text/html entries still have snapshots. Fantastic. Thank you so much!